LIKE查询的列优化

时间:2011-11-18 23:45:45

标签: mysql

我有一个包含300 000条记录的数据库表。最常见的查询是:

SELECT [..] WHERE `word` LIKE 'userInput%';

目前列类型为varchar(50) UNIQUE。我想知道是否有一种方法可以优化此特定查询的列?

2011年11月19日格林尼治标准时间00:00:

mysql> EXPLAIN SELECT `word_id`, `word` FROM `words` WHERE `word` LIKE 'bar%'
    -> ;
+----+-------------+-------+-------+---------------+------+---------+------+------+--------------------------+
| id | select_type | table | type  | possible_keys | key  | key_len | ref  | rows | Extra                    |
+----+-------------+-------+-------+---------------+------+---------+------+------+--------------------------+
|  1 | SIMPLE      | words | range | word          | word | 152     | NULL |  435 | Using where; Using index |
+----+-------------+-------+-------+---------------+------+---------+------+------+--------------------------+

1 个答案:

答案 0 :(得分:3)

只要您使用带有通配符搜索类型的“开始”,只需一个标准索引即可在单词上正常工作。

只有当您开始进行“包含”通配符搜索时,才会开始编写索引方面的难题。

当然,附上解释计划会有所帮助......

根据解释计划,看起来你做得和你一样好。它表明它正在正确使用索引,而不是进行任何全表扫描或文件排序。