Czy jest szczególnie źle mieć bardzo, bardzo duże zapytanie SQL z wieloma (potencjalnie nadmiarowymi) klauzulami WHERE?Praktyczne ograniczenie długości zapytań SQL (w szczególności MySQL)
Na przykład, tutaj jest kwerenda Mam wygenerowany z mojej aplikacji internetowej ze wszystko wyłączone, która powinna być jak największa zapytanie o ten program do generowania:
SELECT *
FROM 4e_magic_items
INNER JOIN 4e_magic_item_levels
ON 4e_magic_items.id = 4e_magic_item_levels.itemid
INNER JOIN 4e_monster_sources
ON 4e_magic_items.source = 4e_monster_sources.id
WHERE (itemlevel BETWEEN 1 AND 30)
AND source!=16 AND source!=2 AND source!=5
AND source!=13 AND source!=15 AND source!=3
AND source!=4 AND source!=12 AND source!=7
AND source!=14 AND source!=11 AND source!=10
AND source!=8 AND source!=1 AND source!=6
AND source!=9 AND type!='Arms' AND type!='Feet'
AND type!='Hands' AND type!='Head'
AND type!='Neck' AND type!='Orb'
AND type!='Potion' AND type!='Ring'
AND type!='Rod' AND type!='Staff'
AND type!='Symbol' AND type!='Waist'
AND type!='Wand' AND type!='Wondrous Item'
AND type!='Alchemical Item' AND type!='Elixir'
AND type!='Reagent' AND type!='Whetstone'
AND type!='Other Consumable' AND type!='Companion'
AND type!='Mount' AND (type!='Armor' OR (false))
AND (type!='Weapon' OR (false))
ORDER BY type ASC, itemlevel ASC, name ASC
wydaje się działać na tyle dobrze, ale nie jest to również szczególnie duży ruch (kilkaset odwiedzin dziennie) i zastanawiam się, czy warto byłoby spróbować zoptymalizować zapytania w celu usunięcia zwolnień i tym podobnych.
1. Dziękuję za odpowiedzi na pytanie, myślę, że rozmiar zapytania nie powinien być dla mnie teraz problemem. 2. Dziękujemy wszystkim za porady dotyczące formatowania SQL. Jestem dla niego nowy i jest wiele sztuczek, których nie znam (np. "Wpisz nie (...)") 3. Podobnie jak dodatek, jest to aplikacja PHP/MySQL – Asmor
Oto przydatne Internetowy formater SQL: http://www.sqlinform.com/ – micahwittman
Kiedy i próbujesz korzystać z witryny, czy wydaje się to powolne? Jeśli jest tylko kilkaset trafień dziennie, to chyba nie można się tym martwić. Czy oczekujesz wzrostu natężenia ruchu? O ile? Jeśli nie masz ochoty na odrobinę czasu, możesz po prostu to zrobić, aby chronić witrynę w przyszłości. Ale czy nadszedł czas, aby programowo znaleźć i usunąć nadmiarowość, która jest większa niż czas potrzebny na uruchomienie zapytania? –