【发布时间】:2014-09-10 08:39:32
【问题描述】:
我想在一个看起来像这样的 SQLite 数据库上运行查询
SELECT a,b,c,d FROM data WHERE a IN (1,2,3) ORDER BY b,c
我应该使用什么类型/顺序的索引来使 SQLite(或者以后的 MySQL)能够快速执行此操作?
如何轻松检查查询是否被索引增强(即如何解释 EXPLAIN)?如果我在索引中包含d,SQLite 会更快吗?
编辑: 以下是表格的特点:
- 10.000.000 行
- 60 个不同的
a - 6.000.000 不同
b - 2.000 个不同的
c - 没有限制
- 表格是我的个人分析数据;它只写一次,然后只读
PS:有没有参考资料可以让我了解 SQLite/MySQL 何时可以使用索引?
【问题讨论】:
-
提供的详细信息不足以为
data表选择索引结构。理想情况下,您将提供总行数、每列中不同值的数量、任何列上的唯一约束或其组合。 -
此表的使用方式也很重要。那是 DW 或事务系统中的表吗?记录会被更新还是删除?
-
Re“是否有参考资料让我可以学习 SQLite/MySQL 何时可以使用索引”:use-the-index-luke.com