【发布时间】:2016-06-03 17:35:34
【问题描述】:
c#“SqlDataReader”是否考虑了数据库中存在的NonClustered索引?
例如我在数据库上创建了索引:
Create nonClustered Index x1 on [MyDB].[dbo].[Customers] (CustomerID)
然后在 c# 代码中我执行以下操作:
String sqlQry="Select CustomerId from [MyDB].[dbo].[Customers] where CustomerID=123456";
SqlCommand cmdFindCustomer = new SqlCommand(sqlQry, SQLConnectionObj);
SqlDataReader r = cmdFindCustomer.ExecuteReader();
【问题讨论】:
-
这与
SqlDataReader完全无关。一个查询就是一个查询,不管它来自哪里。优化器会使用您创建的索引吗?很可能,是的。但客户端代码如何执行查询无关紧要。 -
如上所述。没有任何关系。
-
非聚集索引是为了确保在多用户环境中创建唯一键(id)。非集群是当您有多个服务器用于数据库时。通常你会在聚簇索引上附加一个修正号,这样每个服务器的 id 都会不同。服务器一附加 100001 + 非聚集索引。服务器二追加 100002 + 非聚集索引。
-
啊!查询确实使用索引。谢谢杰伦。
-
@jdweng 你绝对离正确答案还差得很远。聚集/非聚集索引与多台服务器完全无关。请阅读this page from the msdn 以了解它们的实际描述。你描述的是identity range management
标签: c# sql-server indexing sqldatareader