je suis tombé sur ce article qui indique que cette requête:Y a-t-il des SGBDR classiques ("bases de données") qui n'optimisent PAS sur l'opérateur symbolique ">" ou "<"?
SELECT * FROM TABLE WHERE COLUMN > 16
est plus lent que
SELECT * FROM TABLE WHERE COLUMN >= 17
La raison est que
[la requête] n'est pas optimisée en au fait que le SGBD aura pour rechercher la valeur 16 ALORS balayer vers l'avant jusqu'à la valeur 16
La deuxième requête est plus rapide parce que
De cette façon, le SGBD peut sauter tout de suite à [la] valeur
J'ai du mal à croire que SGBDR traditionnels de (Postgres, Oracle, MySQL/maria, DB2, etc) sont vraiment "stupides" - ne sont-ils pas assez intelligents pour optimiser eux-mêmes cette différence? Est-ce que quelqu'un peut confirmer ou infirmer que cela est (ou n'est pas) le cas sur la plupart des SGBDR classiques?
hmm .. peut-être je aurais dû mettre cela sur http://programmers.stackexchange.com/? – Marco
Je doute que ce soit un problème commun. – jarlh
@Marco. . . Cela ne ressemble pas à un comportement normal. Vraisemblablement, la déclaration se réfère à l'utilisation d'un index. Trouver la valeur suivante après '16' n'est vraiment pas si difficile quand on utilise un index. Peut-être que le '=' pourrait sauver quelques cycles de calcul, mais une telle optimisation serait submergée par presque toute autre considération. Il y a plusieurs autres inexactitudes dans ce blog. –