我不是 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 小时。
希望这里有人能帮帮我,谢谢大家。
最佳答案
Mysql 会在第一个通配符 (%) 之前使用你在 LIKE 上的索引。 因此,如果通配符是“seach-string”的第一个符号,则不会使用索引。
http://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html
LIKE 'John%'
- 快
LIKE '%John%'
- 慢
我相信你应该使用全文搜索
关于MySQL 与数据库一起工作包含一个包含数百万行的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32305509/