Je fais une grande base de données qui, à cause de cette question, disons, contient 3 tables:Accélérez SQL sélectionnez dans SQLite
A. Tableau « Employés » avec des champs:
id = ENTIER PRIMAIRE INDEX AUTOINCREMENT
d'autres n'importe
B. Tableau "Job_Sites" avec des champs:
id = ENTIER PRIMAIRE INDEX AUTOINCREMENT
D'autres ne comptent pas
C. Tableau "avec des champs" Les journées de travail:
id = ENTIER PRIMAIRE INDEX AUTOINCREMENT
emp_id = est une clé étrangère à Employees (id)
job_id = est une clé étrangère à Job_Sites (id)
datew = ENTIER qui signifie la journée de travail réelle, représentée par une date Unix en secondes depuis minuit Au 1 er janvier, 1970
L'opération la plus courante dans cette base de données est d'afficher journées de travail pour un employé spécifique. J'exécute l'instruction select suivante:
SELECT * FROM jours de travail OÙ emp_id = 'ID réel de l'employé' ET job_id = 'Actual ID du site d'emploi' ET datew> = D1 ET datew < D2
Je dois signaler que D1 et D2 sont calculés pour le début du mois en recherche et pour le mois suivant, respectivement.
J'ai en fait deux questions:
Dois-je mettre tous les champs comme index en dehors des index primaires? (Désolé, je semble mal comprendre le concept d'indexation)
Y at-il un moyen de réécrire l'instruction Select pour l'accélérer peut-être. Par exemple, la plupart des contrôles seraient de voir que l'ID de l'employé et l'ID du site de travail correspondent. Peut-être qu'il y a un moyen de le diviser?
PS. J'ai oublié de dire que j'utilise SQLite dans une application Windows C++.