我有一个包含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 |
+----+-------------+-------+-------+---------------+------+---------+------+------+--------------------------+
答案 0 :(得分:3)
只要您使用带有通配符搜索类型的“开始”,只需一个标准索引即可在单词上正常工作。
只有当您开始进行“包含”通配符搜索时,才会开始编写索引方面的难题。
当然,附上解释计划会有所帮助......
根据解释计划,看起来你做得和你一样好。它表明它正在正确使用索引,而不是进行任何全表扫描或文件排序。