mysql是如何使用索引的?

摘自官网

MySQL使用索引进行以下操作:

  1. WHERE条件中,快速查找匹配的行。(快速查询数据)

  2. 从准备查询的数据中消除多余行。如果可以在多个索引之间进行选择,则MySQL通常会使用查找最少行数的索引。

  3. 如果表具有多列索引,那么优化器可以使用索引的任何最左前缀来查找行。
    举例来说,如果你有一个三列的索引 (col1, col2, col3),你有索引的搜索功能(col1), (col1, col2)以及(col1, col2, col3)。有关更多信息,请参见 第8.3.6节“多列索引”。

  4. 执行联接时从其他表中检索行。如果声明相同的类型和大小,MySQL可以更有效地在列上使用索引。
    在这种情况下, **VARCHAR与 CHAR被认为是相同的,**如果它们被声明为相同的大小。例如, VARCHAR(10)和 CHAR(10)是相同的大小,但是 VARCHAR(10)和 CHAR(15)不是。

    为了在非二进制字符串列之间进行比较,两个列应使用相同的字符集。例如,将一utf8列与一 latin1列进行比较会排除使用索引。

    如果无法通过转换直接比较值,则比较不同的列(例如,将字符串列与时间或数字列进行比较)可能会阻止使用索引。
    对于给定的值,如1 是数值,它可能与字符串列进行比较时,是相等的,例如 ‘1’,’ 1’, ‘00001’,或’01.e1’。这排除了对字符串列使用任何索引的可能性。

你可能感兴趣的:(mysql,数据库)