【发布时间】:2016-06-13 11:34:24
【问题描述】:
我已经问了多个关于索引的问题。像这样的:
以下查询会从该索引中受益吗? mytable(col1, col2, col3)
. . . WHERE col1 = ? AND col3 = ?
. . . WHERE col2 = ?
. . . WHERE col1 IN (?, ?)
. . . WHERE col3 = ? AND col1 NOT IN (?, ?)
. . . WHERE col1 = ? OR col2 = ?
. . . WHERE col2 = ? AND col1 = ?
. . . WHERE col1 = ? AND col2 > ?
. . . WHERE col1 = ? AND col3 > ?
-- each question was containing one of these queries ;-)
每次我得到该问题中提到的特定查询的答案时,我仍然无法判断这样的索引是否对这样的查询有用。 (或如何使其更优化)
所以我决定问这个问题,想了解一下后台。当我在列上创建索引时会发生什么?索引是由什么组成的?多列索引包含哪些行(因为顺序很重要)?它是如何工作的,从而导致查询更快?
实际上,我需要一些关于索引的信息,以便我能够为查询确定合适的索引(多列或单列)。
注意:我有一些与EXPLAIN 合作的经验。是的,我知道在这些情况下使用 EXPLAIN 非常有用。现在我只需要一些进一步的信息。
【问题讨论】: