C# SqlDataReader是否考虑数据库上的非聚集索引?

C# SqlDataReader是否考虑数据库上的非聚集索引?,c#,sql-server,indexing,sqldatareader,C#,Sql Server,Indexing,Sqldatareader,c#“SqlDataReader”是否考虑了数据库上存在的非聚集索引? 例如,我在数据库上创建了索引: Create nonClustered Index x1 on [MyDB].[dbo].[Customers] (CustomerID) 然后在c代码中,我执行以下操作: String sqlQry="Select CustomerId from [MyDB].[dbo].[Customers] where CustomerID=123456"; SqlCommand cmdFindCus

c#“SqlDataReader”是否考虑了数据库上存在的非聚集索引?

例如,我在数据库上创建了索引:

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

否。SQL Server的查询引擎将确定他将用于获取您的数据的最佳索引


使用SqlDataReader对象对键的使用没有影响

否。SQL Server的查询引擎将确定他用于获取您的数据的最佳索引

使用SqlDataReader对象对键的使用没有影响

c#“SqlDataReader”是否考虑了非聚集索引 数据库中是否存在

不,对象不知道索引

假设您的问题是,在SQL Server的查询计划中何时使用非聚集索引,这取决于。优化器通常比我们其他人聪明得多,但如果您愿意,可以通过提示强制使用索引。当然,如果您检查了查询计划,但没有使用它,则会出现这种情况

若要查看是否正在使用索引(GUI路由),请单击SQL Server Management Studio中的“显示实际执行计划”,然后运行查询。它将在一个单独的选项卡上,并以从右到左、从下到上的格式显示操作。在索引上查找索引查找操作。如果你看不到,它就没有被使用。接下来的步骤是什么

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

c#“SqlDataReader”是否考虑了非聚集索引 数据库中是否存在

不,对象不知道索引

假设您的问题是,在SQL Server的查询计划中何时使用非聚集索引,这取决于。优化器通常比我们其他人聪明得多,但如果您愿意,可以通过提示强制使用索引。当然,如果您检查了查询计划,但没有使用它,则会出现这种情况

若要查看是否正在使用索引(GUI路由),请单击SQL Server Management Studio中的“显示实际执行计划”,然后运行查询。它将在一个单独的选项卡上,并以从右到左、从下到上的格式显示操作。在索引上查找索引查找操作。如果你看不到,它就没有被使用。接下来的步骤是什么


对索引体系结构进行研究。MSDN对如何设计和实现好的索引有很好的理解。要查看的其他资源是行业内的优秀顾问,如Paul Randal和Brent Ozar。

这与
SqlDataReader
完全无关。一个查询就是一个查询,不管它来自哪里。优化器会使用您创建的索引吗?很可能,是的。但是客户端代码如何执行查询是不相关的。无任何关系。非聚集索引是确保在多用户环境中创建唯一键(id)。非集群是指一个数据库有多个服务器。通常,您会在聚集索引中附加一个固定编号,以便每个服务器ID都不同。服务器一附加100001+非聚集索引。服务器二附加100002+非聚集索引。啊!查询确实使用索引。谢谢杰伦。@jdweng你完全没有找到正确的答案。聚集/非聚集索引与多个服务器完全无关。请仔细阅读,了解它们是什么。您要描述的是,这与
SqlDataReader
完全无关。一个查询就是一个查询,不管它来自哪里。优化器会使用您创建的索引吗?很可能,是的。但是客户端代码如何执行查询是不相关的。无任何关系。非聚集索引是确保在多用户环境中创建唯一键(id)。非集群是指一个数据库有多个服务器。通常,您会在聚集索引中附加一个固定编号,以便每个服务器ID都不同。服务器一附加100001+非聚集索引。服务器二附加100002+非聚集索引。啊!查询确实使用索引。谢谢杰伦。@jdweng你完全没有找到正确的答案。聚集/非聚集索引与多个服务器完全无关。请仔细阅读,了解它们是什么。你所描述的是我删除了我不再恭敬的评论我删除了我不再恭敬的评论