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%'
- 慢
我认为你应该使用全文搜索
我不是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%'
- 慢
我认为你应该使用全文搜索