0 sql sqlite indexing performance sql-order-by
我正在使用100万条记录的Sqlite数据库。我需要对多列进行排序。为此,我在数据库上创建了复合索引,该索引改善了orderby性能,但是当我们反转排序顺序而不是索引中指定的性能时,性能仍然很差。例如,我已经创建了索引Create Index StudentIDNAMEIndex(SID DESC,NAME DESC);
当我执行ORDER BY SID ASC,NAME DESC或任何其他组合时,ORDER BY查询的性能将大大降低。由于不可能为每个组合添加索引,是否还有另一种方法可以改善不使用索引或有效使用索引的排序?
整理一百万个东西就是整理一百万个东西。如果尚未按照所需的顺序对其进行排序,则需要花费长时间才能对数据进行排序。
也就是说,如果数据库是只读的,则可以通过以下许多工作来显着提高排序性能。取得每个文本列,并创建一个仅包含该列的值(按排序顺序),升序ID和ID索引的表。在原始表中,将文本列替换为ID。最后,您将获得一个包含一百万个条目的表,每个条目只是一个数字ID列表。
您应该发现此表的排序速度要快得多(因为整数比较字符串的速度更快,并且在排序过程中要丢弃的数据更少)。您仍然可以连接到所有辅助表以获取原始文本数据。但是,如果您要输入辅助表中未包含的新文本,则需要做很多工作。重组应用程序以使用此结构需要大量的工作。
那就是说我过去使用过这种设计,并且只读操作的性能改进非常重要。但是,使其工作所需的工作也很重要。
| 归档时间: |
|
| 查看次数: |
2504 次 |
| 最近记录: |