Par exemple, j'ai:SQL efficace pour compter un événement dans les dernières lignes de X
create table a (i int);
On suppose il y a 10k lignes.
Je veux compter 0 dans les 20 dernières lignes.
Quelque chose comme:
select count(*) from (select i from a limit 20) where i = 0;
Est-ce possible de le rendre plus efficace? Comme une seule instruction SQL ou quelque chose?
PS. DB est SQLite3 si cela importe du tout ...
MISE À JOUR
PPS. Pas besoin de regrouper par quoi que ce soit dans cette instance, supposons que la table qui est littéralement 1 colonne (et probablement le DB interne row_ID ou quelque chose). Je suis juste curieux de savoir si cela est possible de faire sans les sélections imbriquées?
Qu'est-ce qui ne va pas avec les sélections imbriquées? J'aurais tendance à penser que la solution d'OrbMan est la plus rapide et la plus propre possible. –
Absolument rien! :) Comme je l'ai dit, je me demandais s'il y avait une meilleure façon de le faire. Si cela ne peut pas être optimisé, alors ça va. Dans ce cas, il semble que les sélections imbriquées sont la solution la plus rapide et la plus optimale. – rytis