sql - SQL Server 如何使用其索引

标签 sql sql-server indexing

我在银行工作。我们有一个包含 40 亿条记录的表,我为三列创建了一个非聚集索引:ACNO、HisDate、BranchNo

我的问题是,如果运行此查询

SELECT * 
FROM dbo.LastBalance 
WHERE HisDate = '20170813' 
  AND BranchNo = '0512'

SQL Server 是否使用该索引?

在 SQL Server 使用索引之前,我应该在 WHERE 子句中使用三列吗?
WHERE 子句中的列顺序重要吗?
谢谢。

最佳答案

如果索引真的是这样创建的:

CREATE INDEX (name) ON dbo.YourTable(ACNO, HisDate, BranchNo)

那么它可能会被使用,如果:

  • 您在 WHERE 中使用了其中所有三列条款
  • 如果您只使用 ACNOHisDate
  • 如果您只使用 ACNO

但它永远不会在您的情况下使用 - 它在您指定n最左边时使用 索引中的列(这适用于所有复合索引 - 使用多个列的索引)。

您仅使用HisDateBranchNo - 但您没有指定 ACNO ,所以这个索引是无用并且永远不会被使用。您应该在 (HisDate, BranchNo) 上有一个索引- 会有帮助

关于sql - SQL Server 如何使用其索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45663941/

相关文章:

sql-server - 将密码存储在数据库中以备后用

mysql - mysql 中针对部分索引或过滤索引的解决方法?

sql - 单个索引与多个字段索引

sql-server - 如果在另一个表中找不到行,则将行插入到表中

c# - 使用 C# 即时创建 SQL Server 数据库文件

SQL |搜索大字符串以返回表中找到的关键短语

c# - 使用 Microsoft.SqlServer.Management.Smo 从 StoredProc 获取结果列而不执行它

ios - 如何在 UItableView 中获取数组的索引号

c# - 将大量 SQL 结果返回到 C# 数组

Javascript,关于数组中的node.js : How can I make the code store,,SQL值