首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ADO.Net DataTables有索引吗?

ADO.Net DataTables有索引吗?
EN

Stack Overflow用户
提问于 2009-07-10 13:35:20
回答 9查看 22.5K关注 0票数 19

我使用的是VSTS2008+ C# + .Net 3.5 + SQL Server2008+ ADO.Net。如果我使用ADO.Net的DataTable从数据库装入一个表,并且在数据库表中,我在该表上定义了两个索引。我的问题是,在ADO.Net DataTable上,是否有相关的索引(和我在物理数据库表上创建的索引一样)来提高DataTable上的某些操作性能?

先谢谢你,乔治

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-07-10 13:40:02

乔治,

答案是否定的。

实际上,可以在内部使用某种类型的索引,但仅作为实现细节。例如,如果您创建了一个外键约束,那么它可能会得到索引的帮助。但这对开发人员来说无关紧要。

票数 -1
EN

Stack Overflow用户

发布于 2014-11-21 23:08:45

不是,但可能是。

您可以使用DataView在DataTable上设置自己的索引。当您更改表时,将重新构建DataView,因此索引应该始终是最新的。

我为我自己的应用程序做了一些工作台测试。我使用DataTable来近似Boost MultiIndexContainer。要在名为"Author“的列上创建索引,我初始化DataTable,然后初始化DataView...

代码语言:javascript
复制
_dvChangesByAuthor = 
    new DataView(
        _dtChanges, 
        string.Empty, 
        "Author ASC", 
        DataViewRowState.CurrentRows);

然后,要从表中按作者拉取数据,可以使用视图的FindRows函数...

代码语言:javascript
复制
            dataRowViews = _dvChangesByAuthor.FindRows(author);
            List<DataRow> returnRows = new List<DataRow>();
            foreach (DataRowView drv in dataRowViews)
            {
                returnRows.Add(drv.Row);
            }

我随机创建了一个大的DataTable,并使用DataTable.Select()、Linq- to -DataSet (通过导出到list来强制执行)和上面的DataView方法运行查询。DataView方法轻松取胜。Linq有5,000个滴答,Select有超过26000个滴答,DataView有192个滴答……

代码语言:javascript
复制
LOC=20141121-14:46:32.863,UTC=20141121-14:46:32.863,DELTA=72718,THR=9,DEBUG,LOG=Program,volumeTest() - Running queries for author >TFYN_AUTHOR_047<
LOC=20141121-14:46:32.863,UTC=20141121-14:46:32.863,DELTA=72718,THR=9,DEBUG,LOG=RightsChangeTracker,GetChangesByAuthorUsingLinqToDataset() - Query elapsed time: 2 ms, 4934 ticks; Rows=65 
LOC=20141121-14:46:32.879,UTC=20141121-14:46:32.879,DELTA=72733,THR=9,DEBUG,LOG=RightsChangeTracker,GetChangesByAuthorUsingSelect() - Query elapsed time: 11 ms, 26575 ticks; Rows=65 
LOC=20141121-14:46:32.879,UTC=20141121-14:46:32.879,DELTA=72733,THR=9,DEBUG,LOG=RightsChangeTracker,GetChangesByAuthorUsingDataview() - Query elapsed time: 0 ms, 192 ticks; Rows=65

所以,如果你想在一个DataTable上建立索引,我建议你使用DataView,如果你能处理这样一个事实:当数据改变时,索引会被重新构建。

票数 12
EN

Stack Overflow用户

发布于 2012-04-29 14:53:46

您可以为datatable创建主键。如果你在主键字段中搜索,过滤操作会得到很大的提升。请查看此链接:here

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1109550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档