SqlDataReader是否考虑了数据库上的NonClustered Index?

时间:2016-06-03 17:35:35

标签: c# sql-server indexing sqldatareader

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();

2 个答案:

答案 0 :(得分:2)

  

c#“SqlDataReader”是否考虑了NonClustered索引   存在于数据库中?

不,对象不知道索引。

假设你的问题是,什么时候非聚集索引将在SQL Server的查询计划中使用,它取决于。优化器通常比我们其他人更聪明,但如果你想要,你可以强制使用带有提示的索引。当然,如果您检查查询计划并且未使用它,那就是这样。

要查看您的索引是否正在使用(GUI路由),请单击SQL Server Management Studio中的显示实际执行计划并运行查询。它将位于单独的选项卡上,并且操作以您应该从右到左,从下到上阅读的格式显示。寻找希望索引搜索索引的操作。如果你没有看到它,它就没有被使用。接下来的步骤是什么?

对索引架构进行研究。 MSDN对如何设计和实现好的索引有很好的了解。其他一些需要检查的资源是行业内的优秀顾问,如Paul Randal和Brent Ozar。

答案 1 :(得分:0)

没有。 SQL Server的查询引擎将确定他将用于获取数据的最佳索引是什么。

使用SqlDataReader对象不会影响密钥的使用。