【问题标题】:mysql speed up search querymysql加速搜索查询
【发布时间】:2013-01-21 12:10:55
【问题描述】:

我有一个包含 2 列的文章表

Id INT(4) PK 自动增量 说明 VARCHAR(250) (以及更多列)

此表包含 500.000 条记录,是一个 INNODB 表。 现在我想搜索这样的文章:

SELECT COUNT(*) FROM article(描述如'%cannon%');

执行大约需要一秒钟..

我该怎么做才能加快速度?

我已经在描述列上找到了索引

【问题讨论】:

  • 你可以做几件事,一个是给表添加一个主键以确保它可以被正确索引,然后在表上添加索引以加快查询速度.另外,SELECT COUNT(*) FROM article WHERE description LIKE '%cannon%';
  • 描述索引没有帮助
  • like '%cannon%' 杀死索引。
  • 最好的优化是使用COUNT(1) 而不是COUNT(*)%canon% 否定任何其他类型的优化。

标签: mysql


【解决方案1】:

您应该考虑在描述中添加全文索引:

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

然后使用:

SELECT 
    COUNT(*) 
FROM article 
WHERE MATCH (description) AGAINST ('cannon' WITH QUERY EXPANSION);

【讨论】:

  • 存储引擎是innodb
  • 亲,5.6以后支持全文搜索,你贴的是5.0的文档
【解决方案2】:

like '%cannon%' 的查询很难优化。不,索引不能帮助你。也许全文搜索可以帮到你。

【讨论】:

    猜你喜欢
    • 2013-07-27
    • 2014-10-20
    • 2014-03-17
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 2012-11-12
    相关资源
    最近更新 更多