SQL LIKE是否迭代表的每一行

时间:2015-02-15 20:20:00

标签: mysql sql search sql-like

我很好奇,如果我的SQL数据库的table中有一行fieldUsername我有数十亿行,我必须从字母开始搜索名称G和db中的数据是未排序的,所以LIKE statment迭代每一行? 如果我在我的表中对数据进行排序,是否可以使用类似Binary Search的内容来减少搜索时间,如果是,那么该怎么做呢?或者在排序后我还要坚持使用LIKE

1 个答案:

答案 0 :(得分:2)

如果你这样做:

where username like 'G%'

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

在SQL的#34;排序表"中确实没有概念。有一个更强大的索引概念。如果你有一个索引username是第一个(或唯一的键),那么MySQL通常会使用索引来进行这种类型的查询。它可以这样做,因为like模式以常量开始。

以下使用索引:

where username like '%G'
where username like '%G%'
where left(username, 1) = 'G'
相关问题