第一次查询(返回行需要大约14秒)
select * from table_1
INNER JOIN table_2 ON table_1.column= table_2.column0
where table_2.column2 LIKE "%string%";'
解释结果:
table_1有300k记录,table_2有330k记录。
第二个查询(几乎2.5秒内返回行)
select * from table_1
where table_1.column1 LIKE "%string%";
解释结果:
如何让我的第一次查询更快?
答案 0 :(得分:0)
1)当连接两个表时,很明显它应该处理更多的行。因此,查询2比查询1慢。
2)我假设您知道索引会更快。
加入在table_1.column = table_2.column0上。
如果table_1.column和table_2.column0中的任何一个或任何一个都是非索引列,则查询应转到表并搜索而不是使用索引来进行连接。索引查询会更快。考虑是否可以在这两列上添加索引。
3)在这两个查询中,您正在使用' LIKE"%string%"'。如果您需要使用%string%,请再次考虑。如果有'%'将不会使用索引。在字符串的开头。因此,这不是索引扫描。
并且不要为所有列添加索引。这将使插入,更新和删除操作变慢。建议不要编制太多索引。根据您使用列的频率选择要编制索引的列。
使用EXPLAIN命令检查查询的执行方式。