Database 组合键相关查询
假设一个表的col1、col2、col3、col4上有一个复合键,当我使用col2时,sql查询索引中的col3没有触发,正在进行全表扫描(原因可能是col2,col3可能不是索引的驱动键)Database 组合键相关查询,database,composite-key,Database,Composite Key,假设一个表的col1、col2、col3、col4上有一个复合键,当我使用col2时,sql查询索引中的col3没有触发,正在进行全表扫描(原因可能是col2,col3可能不是索引的驱动键) 在这种情况下,无论是在col2上创建单独的索引,col3都是唯一的解决方案(或者)是否有任何方法推动现有索引工作(比如使用提示(或者)其他方法)。假设您的统计数据是最新的,那么dbms不使用索引的可能性很大,因为它认为表扫描速度更快。因为col1似乎没有包含在查询中,所以这是有道理的——索引在这方面没有多大
在这种情况下,无论是在col2上创建单独的索引,col3都是唯一的解决方案(或者)是否有任何方法推动现有索引工作(比如使用提示(或者)其他方法)。假设您的统计数据是最新的,那么dbms不使用索引的可能性很大,因为它认为表扫描速度更快。因为col1似乎没有包含在查询中,所以这是有道理的——索引在这方面没有多大帮助 修复它的最简单方法是创建另一个索引
create index on your-table-name (col2, col3);
但即使这样也不能保证您的查询会使用它。在小表上,有时扫描整个(小)表比扫描索引然后从表中读取行更有效
提示如何影响查询取决于dbms。有些根本不支持提示。假设您的统计数据是最新的,dbms很可能不使用索引,因为它认为表扫描更快。因为col1似乎没有包含在查询中,所以这是有道理的——索引在这方面没有多大帮助 修复它的最简单方法是创建另一个索引
create index on your-table-name (col2, col3);
但即使这样也不能保证您的查询会使用它。在小表上,有时扫描整个(小)表比扫描索引然后从表中读取行更有效
提示如何影响查询取决于dbms。有些根本不支持提示。若要获得好的答案,请编辑您的问题并粘贴到查询中,解释的输出,然后用数据库管理系统标记问题。若要获得好的答案,请编辑您的问题并粘贴到查询中,解释的输出,然后用数据库管理系统标记问题。