ADO.NETDataTable约束如何影响性能?DataTable上的约束(例如PrimaryKey和UniqueContraint)是否使选择与在SQLServer中一样高效?或者他们的唯一目的是对数据执行规则?myDT.Constraints.Add("PK",myDT.Columns["UniqueID"],true);//添加主键myDT.Constrinats.Add(newUniqueConstraint(newDataColumn[]{//为UserID添加唯一约束myDT.Columns["UserID"],myDT.Columns["UniqueID"]}));在通过UniqueID或UserID在DataTable中查找数据时,这些示例是否可能具有更好的性能?我认为您对索引(性能)的使用混淆了主键和约束(业务领域模型)的使用。外键会影响优化器,索引通常是在外键上创建的。在SQLServer世界中,主键经常与聚簇索引混淆,因为选择代理键(想想自增标识列)的次数通常是主键和聚簇索引。本文可能有用:ADO.NET2.0中的数据集和数据表。对您的评论的回应:使用DataView重复非主键搜索如果您需要使用非主键数据重复搜索,请创建一个具有排序顺序的DataView。这将创建一个可用于执行搜索的索引。这最适合重复搜索,因为创建索引会产生一些成本。DataView对象公开了Find和FindRows方法,以便您可以查询基础DataTable中的数据。如果仅执行单个查询,则创建索引所需的处理会降低使用索引获得的性能。在创建DataView对象时,使用DataView构造函数,它将Sort、RowFilter和RowStateFilter值与底层DataTable一起作为构造函数参数。使用DataView构造函数可确保索引只构建一次。如果您创建一个空的DataView并随后设置Sort、RowFilter或RowStateFilter属性,则至少会构建两次索引。使用B树(或其某些变体)实现DataTable。快速浏览一下Reflector,在DataTable类中有一个Index类加上一个LiveIndexes属性,这意味着有一些索引,但我真的不知道它们在哪里。根据我(非常有限)的经验:对PK的查询非常快。一般来说,约束会减慢速度。但是对于选择,独特的约束可以加快速度(但我可以找到MS参考资料)并且还可以根据选择进行限制。我发现的大多数参考资料都谈到限制减速的限制因素。因此,在您的情况下,它可以提高性能。http://msdn.microsoft.com/en-us/library/49z48hxc.aspx以上是C#学习教程:ADO.NETDataTable约束如何影响性能?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
