【发布时间】:2011-08-07 14:52:37
【问题描述】:
我正在制作一个大型数据库,为了这个问题,假设包含 3 个表:
A.包含字段的“员工”表:
id = INTEGER PRIMARY INDEX AUTOINCREMENT
其他无所谓
B.包含字段的表“Job_Sites”:
id = INTEGER PRIMARY INDEX AUTOINCREMENT
其他无所谓
C.包含字段的“工作日”表:
id = INTEGER PRIMARY INDEX AUTOINCREMENT
emp_id = 是Employees(id) 的外键
job_id = 是 Job_Sites(id) 的外键
datew = INTEGER,代表实际工作日,以 1970 年 1 月 1 日午夜后的 Unix 日期(以秒为单位)表示
此数据库中最常见的操作是显示特定员工的工作日。我执行以下选择语句:
SELECT * FROM Workdays WHERE emp_id='Actual Employee ID' AND job_id='Actual Job Site ID' AND datew>=D1 AND datew 我需要指出的是,D1 和 D2 是分别针对搜索的月初和下个月计算的。 我其实有两个问题: 除了主索引之外,我还应该将任何字段设置为索引吗? (对不起,我似乎误解了整个索引概念) 有什么方法可以重写 Select 语句以加快速度。例如,其中的大多数检查是查看实际员工 ID 和工作地点 ID 是否匹配。也许有办法把它分开? 附言。忘了说,我在 Windows C++ 应用程序中使用 SQLite。
【问题讨论】:
标签: sqlite select performance