Efter en del tips, så har jag ändrat i min databas och kommit fram till följande SQL. Strängen ser riktigt bra ut.. Tvivlar på att du kan få den mycket effektivare än så. Du påverkar hur effektiv frågan är med vilka fälttyper och index du har. Tycker jag du ska sätta dig in i. Den ser väl korrekt ut ja, som Andreas sa så påverkar du prestandan genom att skapa och utnyttja rätt index. Men varför skriver du joinarna så oläsligt? Jämför din SQL-sats med nedanstående, som är exakt samma, bara snyggat till ordningen av joinarna lite samt tagit bort alla förvirrande parenteser. OK, ser betydligt bättre ut, Parantesr är obligatoriska för JET motorn. Kan inte parsa frågan utan dem. Så tyvär måste man leva med dem.Är denna SQL effektiv??
Verkar den bra uppbyggd?
<code>
use melodistatestikSQL
SELECT t_SongTitlar.ArrNo,
t_SongTitlar.songtitel,
t_Kategori.Kategori,
t_Album.Album,
t_forfattare.namn,
t_SongTitlar.Stim,
t_SongTitlar.Hide,
t_SongTitlar.Anteck
FROM t_Kategori INNER JOIN
(t_Album INNER JOIN
((t_songtitlar LEFT JOIN t_songforfattare
ON t_songtitlar.ArrNo = t_songforfattare.ArrNo)
LEFT JOIN t_Forfattare
ON t_songforfattare.for_id = t_forfattare.for_id)
ON t_Album.CD_ID = t_SongTitlar.Album)
ON t_Kategori.Kat_ID = t_SongTitlar.Kategori
</code>
Den fungerar i QA.Sv: Är denna SQL effektiv??
Sv: Är denna SQL effektiv??
Sv: Är denna SQL effektiv??
<code>
SELECT t_SongTitlar.ArrNo,
t_SongTitlar.songtitel,
t_Kategori.Kategori,
t_Album.Album,
t_forfattare.namn,
t_SongTitlar.Stim,
t_SongTitlar.Hide,
t_SongTitlar.Anteck
FROM t_Kategori
INNER JOIN t_songtitlar
ON t_Kategori.Kat_ID = t_SongTitlar.Kategori
INNER JOIN t_Album
ON t_Album.CD_ID = t_SongTitlar.Album
LEFT JOIN t_songforfattare
ON t_songtitlar.ArrNo = t_songforfattare.ArrNo
LEFT JOIN t_Forfattare
ON t_songforfattare.for_id = t_forfattare.for_id
</code>
Den går från tabell till tabell, kategori joinas med songtitlar (och så villkoret för det), songtitlar joinas med album (och villkoret för det), osv. Mycket lättare att läsa, imho.Sv: Är denna SQL effektiv??
Den här typ av SQL är ju väldigt svåra, så jag var bara glad att jag fick den att fungera...
När det gäller indexering, så har jag inte lagt in det i något fält, jag antar att det är som i Access, primärnycklarna blir indexerade. Finns det någon anledning att indexera mer?
Datatyperna i SQL-Server har jag fortfarande väldigt svårt för, hade det varit i Acces(forfarande) så tror jag nog att jag har det på mina fem, men...
Några förslag?Sv: Är denna SQL effektiv??