FAQ |
Kalender |
2009-05-19, 16:06 | #11 | ||
|
|||
Flitig postare
|
UNION gör en implicit DISTINCT, så den går långsammare än UNION ALL, som förutsätter att det du smäller samman är unikt (vet inte vad du har för PK eller unique constraints i dina tabeller).
Gräsligt query du skaffat dig i alla fall.. jag skulle råda till omdesign, men det kanske inte är aktuellt om tabellerna nu var så stora |
||
Svara med citat |
2009-05-19, 16:28 | #12 | ||
|
|||
Supermoderator
|
Jag tycker också det känns som att databasdesignen inte är helt optimal. Finns det ingen möjlighet till ombyggnad så kan du kanske ordna med någon cache-funktionalitet om det inte måste vara purfärska data?
__________________
Full-stack developer, free for smaller assignments |
||
Svara med citat |
2009-05-19, 19:01 | #13 | ||
|
|||
Flitig postare
|
Jag vet inte riktigt hur man skulle kunna göra designen bättre, vad det handlar om är att lagra i en tabell (tabell 2) vilka värden som är tillåtna för ett visst attribut i en annan (tabell 1). Frågan kommer inte köras så ofta och inte av användarna utan bara av "administratören".
@Perben: Vad menar du med att allt som man smäller samman ska vara unikt? |
||
Svara med citat |
2009-05-19, 20:20 | #14 | ||
|
|||
Flitig postare
|
Andi,
Det beror lite på vilken motor man använder på baksidan, men oftast är det så att UNION (vilket är ett alias för UNION DISTINCT på väldigt många databaser) skapar en slags temporär tabell för att kolla duplicerade entries. UNION ALLhar ingen sådan koll. Så om man vet att datat man sätter ihop med en union är unikt är UNION ALL snabbare. Det finns rätt väl beskrivet både för MS SQL och MySQL, vet att Oracle har samma "syndrom." http://www.mysqlperformanceblog.com/...l-performance/ http://blog.sqlauthority.com/2007/03...r-performance/ |
||
Svara med citat |
2009-05-19, 20:46 | #15 | ||
|
|||
Flitig postare
|
OK, jag fattar, tack!
Måste även tacka alla andra som kom med förslag på lösningar! |
||
Svara med citat |
Svara |
|
|