【发布时间】:2015-02-15 20:19:59
【问题描述】:
我只是好奇,如果我的SQL 数据库的table 中有数十亿行,其中一个field 是Username,我必须搜索从字母G 开始的名称,而数据库中的数据是未排序所以LIKE 语句是否迭代每一行??
如果我对表中的数据进行排序,是否可以使用 Binary Search 之类的东西来减少搜索时间,如果是,那么该怎么做?还是在排序后我仍然必须坚持LIKE?
【问题讨论】:
-
始终在所需查询上使用
EXPLAIN SELECT....检查 MySQL 的执行计划。如果username被索引,并且您尝试匹配字符串的start,MySQL 可能能够使用该索引。如果两边都使用通配符,它将无法使用索引WHERE Username LIKE '%middle%'