【发布时间】:2012-02-29 14:33:02
【问题描述】:
我正在使用 100 万条记录的 Sqlite 数据库。我需要对多列进行排序。为此,我在数据库上创建了复合索引,这提高了 orderby 性能,但是当我们反转排序顺序而不是索引中指定的顺序时,性能仍然很差。 例如我创建了索引 创建索引 StudentIDNAMEIndex ( SID DESC, 名称描述 );
当我 ORDER BY SID ASC、NAME DESC 或任何其他组合时,ORDER BY 查询的性能会急剧下降。由于无法为每个组合添加索引,是否有另一种方法可以改进无索引或有效使用索引的排序?
【问题讨论】:
-
如果你有这么多的记录,也许你应该看看更重量级的数据库,比如Oracle、MySQL、SQL Server或PostgreSQL? SQLite 被设计为简单而干净,使 bug 更难引入。我命名的其他 DBMS 专为减少错误数量而设计并且具有出色的性能。
-
除了@AdamMihalcin 的评论,值得指出的是,您无需付费即可获得更重量级的数据库,许多是免费的或提供功能减少的免费版本(例如SQL Server Express),这些免费版本在完成这项任务时仍然比 SQLite 快得多
标签: sql performance sqlite indexing sql-order-by