MySQL 使用的数据库包含一个 table 数百万行

MySQL work with the database contains a table with millions of rows

我不是DBA所以想问你几个问题

我的 table 中有 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%' - 慢

我认为你应该使用全文搜索

http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html