如何提高mysql的查询性能

时间:2018-10-31 09:47:05

标签: mysql performance sql-like

query1-> select * from table where name like '%xyz'

query2-> select * from table where name like 'xyz%'

在这两个查询中,哪个是最快的,为什么?

如何提高慢查询的性能?

1 个答案:

答案 0 :(得分:2)

简短的回答:如果name上有索引,则Query2会更快。

长答案: 我想name上有一个索引。

InnoDB使用B树索引,这是一个非常简化的图片,它的外观如何: B-tree

如果where条件以%(通配符)开头,则InnoDB不知道它是否必须从根节点向左或向右移动。因此它将扫描整个表。

如果条件以示例D开头,则InnoDB知道它必须继续进行,最后,它将找到叶子节点。这需要更少的步骤,更少的读取,并且更快。

结论,如果您的where条件以%开头,并且始终是全表扫描。