Ik ben onze zoek functie aan het optimaliseren, maar ik heb wat advies nodig...
Nu wil ik de items hebben die matchen op id_search 1 and 2 and 3. Daarvoor gebruik ik de volgende SQL query met 3(!) subqueries:
Deze query geeft de Walkman terug. Maar ik heb het idee dat deze SQL veel efficiënter kan. Misschien met een UNIQUE index op (id_search, id_item)? Wie heeft er een tip?
(Ik gebruik Postgres 8.2)
table: item id name -------------------------------------- 1 iPod 2 Zune 3 Walkman table: search_item id_search id_item -------------------------------------- 1 1 1 2 1 3 2 2 2 3 3 1 3 3
Nu wil ik de items hebben die matchen op id_search 1 and 2 and 3. Daarvoor gebruik ik de volgende SQL query met 3(!) subqueries:
SQL:
1
2
3
4
| SELECT * FROM item WHERE id IN (SELECT id_item FROM search_item WHERE id_search=1 AND id_item IN (SELECT id_item FROM search_item WHERE id_search=2 AND id_item IN (SELECT id_item FROM search_item WHERE id_search=3))); |
Deze query geeft de Walkman terug. Maar ik heb het idee dat deze SQL veel efficiënter kan. Misschien met een UNIQUE index op (id_search, id_item)? Wie heeft er een tip?
(Ik gebruik Postgres 8.2)
[ Voor 0% gewijzigd door Verwijderd op 11-09-2007 23:07 . Reden: Foutje... ]