【发布时间】:2014-07-26 03:21:22
【问题描述】:
现在我有一个包含超过 250,000 条记录的表,现在我想为此制作自定义搜索引擎。
当我使用标准查询SELECT * FROM table WHERE column1 LIKE '%word%' OR column2 LIKE '%word%' LIMIT 20 时,它可以工作但性能很慢,是否有其他查询可以提供相同的结果但性能却很快?
我在 mysql 5.0 中使用 INNODB,所以无法添加 FULLTEXT 索引。
【问题讨论】:
-
首先,为什么要在查询的同一列上使用 OR 重复相同的条件?
-
ops im type it must SELECT * FROM table WHERE column1 LIKE '%word%' OR column2 LIKE '%word%'
-
见dba.stackexchange.com/questions/39693/… 和stackoverflow.com/questions/8754675/… 和openlogic.com/wazi/bid/195905/Tips-and-Tricks-to-Optimize-MySQL 和mysqlperformanceblog.com/2006/06/09/… - 另外,你有索引吗?这可能是一个问题,如果您有任何不需要的循环,或者在循环中包含数据库连接。
-
另外,选择实际列而不是所有
*也可能是一个促成因素。 250,000 条记录对于 MySQL 来说应该不算多。有些甚至以相当好的性能查询数百万。定义“慢”。