【问题标题】:composite key related query复合键相关查询
【发布时间】:2011-10-14 14:39:25
【问题描述】:

假设一个表的 col1,col2,col3,col4 上有一个复合键,当我在 sql 查询中使用 col2,col3 时索引没有触发并且正在进行全表扫描。(原因可能是 col2,col3可能不是索引的驱动键)。

在这种情况下,无论在 col2、col3 上创建单独的索引是唯一的解决方案(或)是否有任何方法可以推动现有索引工作(比如使用提示(或)其他方式)。

【问题讨论】:

  • 要获得好的答案,请编辑您的问题并粘贴到查询中,即 EXPLAIN 的输出,并用您的 dbms 标记问题。

标签: database composite-key


【解决方案1】:

假设您的统计信息是最新的,那么您的 dbms 很可能不使用索引,因为它认为表扫描更快。由于 col1 似乎没有包含在您的查询中,这是有道理的——索引在那里没有多大帮助。

修复它的最简单方法是创建另一个索引。

create index on your-table-name (col2, col3);

但即使这样也不能保证您的查询会使用它。在小表上,有时扫描整个(小)表比扫描索引然后从表中读取行更有效。

提示如何影响您的查询取决于 dbms。有些根本不支持提示。

【讨论】:

    猜你喜欢
    • 2012-03-18
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2018-08-01
    • 1970-01-01
    相关资源
    最近更新 更多