加快SQLite中的SQL select

时间:2011-04-18 05:32:27

标签: sqlite select performance

我正在创建一个大型数据库,为了这个问题,让我们说,包含3个表:

:一种。表“员工”表示字段:

id = INTEGER PRIMARY INDEX AUTOINCREMENT

其他无所谓

B中。表“Job_Sites”表示字段:

id = INTEGER PRIMARY INDEX AUTOINCREMENT

其他无所谓

℃。表格“工作日”包含字段:

id = INTEGER PRIMARY INDEX AUTOINCREMENT

emp_id =是Employees的外键(id)

job_id =是Job_Sites(id)的外键

datew = INTEGER代表实际工作日,由1970年1月1日午夜以来的Unix日期表示


此数据库中最常见的操作是显示特定员工的工作日。我执行以下select语句:

SELECT * FROM工作日WHERE emp_id ='实际员工ID'AND job_id ='实际工作地点ID'和datew> = D1和datew< D2

我需要指出的是,D1和D2分别在搜索和下个月的月初计算。

我实际上有两个问题:

  1. 除了主索引之外,我应该将任何字段设置为索引吗? (对不起,我似乎误解了整个索引概念)

  2. 有没有办法重新编写Select语句以加快速度。例如,其中的大多数检查是看到实际的员工ID和作业站点ID匹配。也许有办法将其分开?

  3. PS。忘了说,我在Windows C ++应用程序中使用SQLite。

1 个答案:

答案 0 :(得分:2)

如果经常使用上述查询,那么通过创建包含查询中列的多列索引可以获得更好的性能:

CREATE INDEX WorkdaysLookupIndex ON Workdays (emp_id, job_id, datew);

有时您只需要创建索引并尝试查询以查看更快的内容。