【问题标题】:Full index scan search contains algorithm全索引扫描搜索包含算法
【发布时间】:2020-01-10 19:49:25
【问题描述】:

假设执行了一次搜索,但它错过了索引并进行了全表扫描。就这个问题而言:

SELECT * FROM bigtable WHERE name like '%someone%'

这需要对name 字段进行全表扫描。是否知道在诸如 postgres、mysql、h2 或 sqlite 等开源数据库上的这些全表扫描使用什么字符串搜索算法?我猜这些数据库的最后一块都经过优化(即使操作会很慢),所以想知道在进行这些全表扫描/没有任何索引的情况下使用了哪些不同的技术。

【问题讨论】:

  • I/O 成本通常占很大比例,因此特定的字符串搜索算法并不重要,除非它特别慢,而且不会特别慢。

标签: mysql database algorithm search


【解决方案1】:

对于 MySQL,它看起来不是很优化。这是一个相对简单的迭代,memcmp 用于多字节字符。见source

不确定其他引擎。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 2016-11-24
    • 1970-01-01
    • 2011-06-28
    相关资源
    最近更新 更多