J'ai un SQL qui peut être simplifié à:Comment éliminer les calculs en double dans SQL?
SELECT *
FROM table
WHERE LOCATE(column, :keyword) > 0
ORDER BY LOCATE(column, :keyword)
Vous pouvez voir qu'il ya un double de « Locate (colonne: mot-clé) ». Y a-t-il un moyen de le calculer une seule fois?
En outre, dans le cas où vous ne saviez pas De nombreuses bases de données vous permettent de créer un index sur une fonction ou un calcul. Donc, si vous vous trouvez à faire beaucoup de requêtes basées sur LOCATE (column,: keyword), vous pouvez créer un index où cette valeur a été précalculée et stockée, pour augmenter la vitesse des requêtes. –
Êtes-vous sûr que LOCATE est appelé deux fois? – tster
tster est correct - de nombreux moteurs sql optimisent cela. –