我正在做一個大的數據庫,對於這個問題的緣故,讓我們說,SQL SELECT語句包含3個表:加快SQLite的
A.表「員工」包含字段:
ID = INTEGER主索引AUTOINCREMENT
其他的並不重要
B.表 「Job_Sites」 包含字段:
ID = INTEGER主索引AUTOINCREMENT
其他的並不重要
C.表 「工作日」 包含字段:
ID = INTEGER主索引AUTOINCREMENT
EMP_ID =是員工的外鍵(ID)
job_id =是Job_Sites的外鍵(ID)
datew = INTEGER一種代表實際工作日,由於1月1日午夜由以秒爲單位的Unix日期表示,1970年
在該數據庫中的最常見的操作是爲一個特定的僱員顯示工作日。我執行以下select語句:
SELECT * FROM工作日WHERE EMP_ID = '實際員工ID' 和JOB_ID = '實際招聘網站ID' 和datew> = D1和datew < D2
我需要指出的D1和D2分別計算在搜索月份的開始和下個月的月份。
其實我有兩個問題:
我應該設置任何領域,除了主索引的索引? (對不起,我似乎誤解了整個索引概念)
有什麼方法可以重寫Select語句來加速它。例如,其中的大多數檢查都會看到實際的員工ID和工作現場ID是否匹配。也許有辦法把它分開?
PS。忘了說,我在Windows C++應用程序中使用SQLite。
CREATE INDEX WorkdaysLookupIndex ON Workdays (emp_id, job_id, datew);
有時候,你只需要創建索引並嘗試查詢: