17. december 2007 - 14:26Der er
12 kommentarer og 1 løsning
Count og Inner Join
Jeg ville bare lige høre om det kan passe at man skal lave en Inner Join når man ikke skal bruge data til noget fra inner join.. Eller er det meget normalt at det laves på den måde ?
Jeg skal selfølige bruge: iu.idb_id = im.id :men vil det ikke være langsomt når man bruger inner join.. eller er det bare mig som ikke kan se det.. :D
SELECT COUNT(*) FROM idb_movie im INNER JOIN idb_userself iu ON iu.idb_id = im.id WHERE iu.self_id = 2 AND im.year = 2004 AND iu.genre_id = 1 AND iu.origin_id = 1;
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Du bruger iu.self_id og im.year (og mere fra im) - så skal du vel lave en join. En join er som sådan ikke langsom - forudsat der er indexer på de felter du joiner på.
Det kan godt være du ikke skal bruge resultatet til noget, men du har det med på dine søgekriterier. Du kan jo ikke bruge "iu.genre_id = 1", hvis tabellen ikke er joinet. Derfor er du nød til at joine.
Du kan dog evt bruge IN() metoden i stedet, men jeg tør ikke sige om den er hurtigere:
SELECT COUNT(*) FROM idb_movie where id in(select idb_id from idb_userself where genre_id = 1 and origin_id = 1)
Det skal i hvert fald kun være et unikt index hvis det er unikt ;) Er der noget der går hurtigere?
Har du en sammentælling du skal lave tit kan man sommetider forsvare at have redundans i databasen - altså skrive antallet i et felt i en tabel, og bare slå op i den, i stedet for at tælle hver gang. Og så skal man lige huske tælle det felt op og ned ved ændringer, s'fø'li.
jo men self_id og idb_id må ikke være unikt da samme xxx_id kan forkomme op til flere gange..
self_id = er bruger id idb_id = film id
og jeg skal også have lavet noget søgning i det så jeg kan nok ikke bruge den med at lave et felt som gemmer antal da 99.9% af en søning ikke giver samme resultat..
men i skal have mange tak for jeres hjælp alivel..
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.