【问题标题】:How to use composite index in range query in mysql如何在mysql的范围查询中使用复合索引
【发布时间】:2017-03-05 22:37:42
【问题描述】:

我有一个包含两个字段 field1 和 field2 的表“test”,并创建了一个复合索引 field1_field2(field1, field2)。 这是一个sql:select * from test force index(field1_field2) where field1 > 100 and field2 = 2 limit 200

而且它运行得不是很好。 我解释了一下,发现只有索引查询使用的field1条件,field2条件被忽略了....

我想知道为什么,我需要一个完美的答案

field1 > 100 的数据很多,field2 = 2 的数据很多

【问题讨论】:

  • 尝试将您的索引列交换为(field2, field1)
  • 另外,请阅读here

标签: mysql indexing composite-index


【解决方案1】:

对于that 查询,您需要INDEX(field2, field1),按that 顺序。将 = 列放在索引的首位。一旦你点击了一个“范围”(例如>),这就是将要使用的索引的最后一部分。

这是Index Cookbook

【讨论】:

    猜你喜欢
    • 2022-12-12
    • 2018-05-24
    • 2012-05-14
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多