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

时间:2015-08-31 06:56:48

标签: mysql sql database phpmyadmin database-administration

我不是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小时。

我希望有人能帮到我,谢谢你们。

1 个答案:

答案 0 :(得分:1)

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