假设表的col1,col2,col3,col4上有一个复合键,当我使用col2时,sql查询索引中的col3没有触发并且正在进行全表扫描。(原因可能是col2,col3可能没有为索引驱动键。)
在这种情况下,无论是在col2上创建单独的索引,col3是唯一的解决方案(或)是否有任何方法可以推动现有索引工作(比如使用提示(或)其他方式)。
答案 0 :(得分:1)
假设您的统计信息是最新的,那么您的dbms不使用索引的可能性很大,因为它认为表扫描速度更快。由于col1似乎没有包含在您的查询中,这是有道理的 - 索引在那里没有多大帮助。
解决它的最简单方法是创建另一个索引。
create index on your-table-name (col2, col3);
但即使这样也无法保证您的查询会使用它。在小表上,扫描整个(小)表有时比扫描索引更有效,然后从表中读取行。
提示如何影响查询取决于dbms。有些人根本不支持提示。