我不是DBA的人,所以我想问你几个问题。
我的表中有4800万行,有10列。 在其中的7列中,我需要运行以下查询:
select * from `table1` WHERE `Flag` = '1' - 10 millions of rows (takes like 2 seconds) - on Flag column i have INDEX
select * from table WHERE `name` LIKE '%John%' - 10k results (takes like 10H) on `name column i have INDEX
我在使用LIKE
时遇到问题,我需要在没有等待2秒的情况下快速获得结果,在我的情况下需要10小时。
我希望有人能帮到我,谢谢你们。
答案 0 :(得分:1)
Mysql将在第一个通配符(%)之前使用LIKE上的索引。 因此,如果通配符是" seach-string"的第一个符号,则不会使用索引。
http://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html
LIKE 'John%'
- 快
LIKE '%John%'
- 慢
我相信你应该使用全文搜索