当前位置:  开发笔记 > 数据库 > 正文

soCaseInsensitive是否会极大地影响TdxMemDataset上的TdxMemIndex的性能?

如何解决《soCaseInsensitive是否会极大地影响TdxMemDataset上的TdxMemIndex的性能?》经验,为你挑选了1个好方法。

我正在为我的DevExpress TdxMemDataset添加一些索引以提高性能.该TdxMemIndex具有SortOptions,其中包括该选项soCaseInsensitive.我的数据通常是GUID字符串,因此它不区分大小写.我想知道我是否更好的只是强制所有数据到相同的情况或如果soCaseInsensitive标志和使用loCaseInsensitive标志调用Locate只有一个较小的性能损失(大致相当于每次转换我的字符串的情况我需要使用索引).

此时我将关闭CaseInsentive并转换案例.



1> John Thomas..:

恕我直言,最好的是确保发布时的数据质量.推理:

    您(通常)知道数据的性质.所以,例如.您可以使用大写(知道GUID是所有ASCII范围)而不是很多,类似的TdxMemDataSet一般的组件被强制使用较慢的AnsiUpperCase.

    您只输入一次数据.搜索/排序/过滤都暗示了TdxMemDataSet的内部超级引擎,这是一个重复的动作.此外,还有其他链式动作将触发此引擎而无需实现.(例如,一个TcxGrid,它默认排序为GridMode:= True(我假设你使用DevEx.组件)并且有一个类似代理的类将排序消息传递给底层数据集.

    通常,数据输入是分步完成的,一批或几批记录.唯一值得注意的例外是数据采集应用程序.但在用户的可用性以上文化这两种情况下允许的方式更大的响应时间让你玩.(IOW多少会将一个UpperCase调用添加到持续0.005毫秒的记录帖?)OTOH,用户对数据撤销操作(搜索,排序,过滤等)的速度要求很高.尽可能快地保持数据的恢复.

    准备好公开数据库中的数据可以降低处理错误的风险,当您编写(如果您要编写)其他模块时(您需要记住AnsiUpperCase中任何模块中的数据,您将编写任何语言).此外,一个典型的例子是当您使用其他外部工具访问数据时(例如,db管理器对数据执行SQL SELCT).

心连心.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有