ADO.NET DataTables有索引吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

我正在使用VSTS 2008 + C#+ .Net 3.5 + SQL Server 2008 + ADO.Net。如果我通过使用ADO.Net的DataTable和数据库表从数据库加载表,我在表上定义了几个索引。我的问题是,无论是在ADO.Net DataTable上,是否有相关索引(与我在物理数据库表中创建的索引相同)来提高DataTable上的某些操作性能?

提问于
用户回答回答于

答案是不。

实际上,某种索引可能在内部使用,但仅作为实现细节。例如,如果你创建一个外键约束,也许这是由一个索引的帮助。但对开发者来说并不重要。

用户回答回答于

其实问题并不像有些人坚持的那样“不好”。(我越来越相信没有这样的想法是一个“坏问题”。)

我有一个相当大的表,我加载到内存中,在一个DataTable对象中。很多次处理都是在这个表的很多行上完成的,我可以很容易地将它们描述为SELECT子句的“WHERE ...”。现在有了这个DataTable,我可以运行Select() - 一个DataTable类的方法 - 但效率很低。

最后,我决定加载按特定列排序的DataTable,并实现我自己的快速搜索,而不是使用Select()函数。事实证明它速度更快,但它当然只适用于那些已排序的列。如果DataTable有索引,麻烦就可以避免了。

扫码关注云+社区