10. juni 2004 - 08:56Der er
6 kommentarer og 2 løsninger
performance af et simpelt select i en kæmpe database
Jeg har to tabeller som jeg gerne vil sammenligne med nedenstående lille select. Problemet er, at tabellerne er meget store, og der er ikke indeks på kolonnerne.
Tabellen ELK har 75 mill records, heraf har de 28 mill records art = 0 eller 9 Tabellen ELM har 26 mill records Værdierne i PK kolonnen er ens for tilsvarende records i de to tabeller (ELM er en delmængde af ELK)
Jeg forventer altså et resultat af min kontrol på 2 mill records fra ELK. Rent intuitivt laver jeg et select i ELK efter de records, der har den rigtige art, og som ikke findes i ELM:
select pk from ELK where ELM.art not in (0,9) and pk not in (select pk from ELM);
Det tager meeeeget lang tid....
En kollega sagde noget om, at 'not in' er dyr rent performance mæssigt, er det rigtigt, - og i så fald... hvordan gør man det bedre ?
hej lap, jeg checker hastighed igen, når jeg kommer på den store database. Mine 'performance målinger' var på en base med 36000 records, - og jeg målte blot på sekunder, - så du har sikkert ret :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.