【问题标题】:Speed up SQL select in SQLite加快 SQLite 中的 SQL 选择
【发布时间】: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 是分别针对搜索的月初和下个月计算的。

我其实有两个问题:

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

  2. 有什么方法可以重写 Select 语句以加快速度。例如,其中的大多数检查是查看实际员工 ID 和工作地点 ID 是否匹配。也许有办法把它分开?

附言。忘了说,我在 Windows C++ 应用程序中使用 SQLite。

【问题讨论】:

    标签: sqlite select performance


    【解决方案1】:

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

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

    有时您只需要创建索引并尝试查询,看看哪个更快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-12
      • 2011-08-04
      • 1970-01-01
      • 2018-02-16
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多