Comment puis-je sélectionner des entrées pour un jour de la semaine donné en utilisant SQL?

StackOverflow https://stackoverflow.com/questions/602245

  •  03-07-2019
  •  | 
  •  

Question

Je pourrais utiliser cette requête pour sélectionner toutes les commandes avec une date le lundi:

SELECT * from orders WHERE strftime("%w", date)="1";

Mais pour autant que je sache, cela ne peut être accéléré avec un index, car chaque ligne strftime doit être calculée.

Je pourrais ajouter un champ supplémentaire avec le jour de la semaine stocké, mais je veux l'éviter. Existe-t-il une solution qui utilise un index ou ai-je tort et cette requête fonctionne réellement? (Cela signifie qu'il n'est pas nécessaire de parcourir toutes les lignes pour calculer le résultat.)

Était-ce utile?

La solution

Si vous voulez tous tous les lundis, vous aurez besoin d'une analyse sur le terrain ou séquentielle. Ce que vous pouvez faire, c'est calculer des dates réelles, par exemple, pour tous les lundis de l'année. La condition WHERE date IN ('2009-03-02', '2009-02-23', ...) utiliserait l'index

.

Autres conseils

Vous pouvez également créer une table d'agenda composée uniquement d'un nom de date et de jour pour chaque jour de l'année (tous deux indexés) au lieu de la suggestion de vartec, puis effectuer votre requête en effectuant une jointure par rapport à cette table.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top