2011-10-14 65 views
1

假设在col1,col2,col3,col4上有一个表的组合键,当我使用col2时,在sql查询索引中的col3没有触发并且正在进行全表扫描(原因可能是是col2,col3可能不会为索引驱动键)。在这种情况下,无论是在col2上创建单独的索引,col3是唯一的解决方案(或)是否有任何方法来推动现有的索引工作(比如使用提示(或其他方式))。复合键相关查询

+0

为了得到很好的答案,编辑你的问题并粘贴查询,EXPLAIN的ouptut,并用你的dbms标记问题。 –

回答

1

假设您的统计数据是最新的,那么您的dbms不使用索引的几率很高,因为它认为表扫描速度更快。由于col1似乎没有包含在你的查询中,所以这很有意义 - 索引对此没有多大帮助。

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

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

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

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