SQL LIKE 是否迭代 table 的每一行

Does SQL LIKE iterate every row of table

我很好奇,如果我的 SQL 数据库的 table 中有数十亿行,其中一个 fieldUsername 并且我必须搜索名称开始从字母 G 和数据库中的数据未排序所以 LIKE 语句每一行迭代? 如果我在 table 中对数据进行排序,是否可以使用 Binary Search 之类的东西来减少搜索时间,如果是,那么该怎么做?或者排序后我还得坚持 LIKE?

如果你这样做:

where username like 'G%'

并且没有索引,那么MySQL会扫描每一行。

"sorted tables"的SQL确实没有概念。有一个更强大的索引概念。如果您有一个索引,其中 username 是第一个(或唯一的键),那么 MySQL 通常会将索引用于此类查询。它可以做到这一点,因为 like 模式以常量开头。

以下将使用索引:

where username like '%G'
where username like '%G%'
where left(username, 1) = 'G'