FAQ |
Kalender |
|
![]() |
#1 | ||
|
|||
Flitig postare
|
Gör ni inte en liten tankevurpa nu?
"databasmotorn jobbar fan så mycket snabbare än php. " ja, men vad är det som skickar och tar emot saker till databasen, just det, php och för varje query så måste man ju kontakta databasen men det är just därför man skall låta databasmotorn jobba för att endast få ut den data man vill ha i ett format som är lätthanterligt. "Det blir ungefär samma antal frågor ändå med alla joins. " ursäkta? Det blir ju ETT anrop och sen får man ju se till att skriva en vettig query jag har en monster-query där jag joinar en tabell mot sig själv + att den innehåller 2 sub-selects som i sig innehåller en join.. den körs på ca 2-4 ms Jag gjorde ett litet test och körde bara en query där jag hämtar top-kategorierna, gissa vad, den tog lika lång tid. Eftersom underkategoriernas frågor ser likadana ut så skulle detta då innebära, med i mitt fall 17 top-kategorier,4ms + 17*4ms =72ms (eller i bästa fall 36ms) detta utan att ha räknat med eventuell tid det tar att skicka saker till sql-servern oavsett hur lång tid det tar så skall man självklart cacha resultatet så att man bara behöver göra en hämtning |
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Mycket flitig postare
|
Citat:
|
|||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Flitig postare
|
Citat:
men i grunden så joinar jag tabellen med sig själv + att jag har med villkor för vilka kategorier som skall visas baserat på om det finns något innehåll under dessa (dessutom har jag ett par fula subquerys) tror inte att TS skulle vara SÅ behjälpt av denna ![]() Kod:
SELECT p.sortOrder,p.prodcatID as TopCatID, (SELECT ProdCatName FROM prodcatnames WHERE ProdCatID =p.ProdCatID AND (LangCode = @langCode OR LangCode = 'en') ORDER BY (LangCode <> 'en') DESC LIMIT 1) As TopCatName, pcl.CatName,pcl.ProdCatID FROM prodcat p LEFT JOIN (SELECT Distinct PG.ProdcatID, (SELECT ProdCatName FROM prodcatnames WHERE prodcatnames.ProdCatID =PG.ProdCatID AND (LangCode = @langCode OR LangCode = 'en') ORDER BY (LangCode <> 'en') DESC LIMIT 1) As CatName, PG.ParentID FROM Prodcat AS PG WHERE PG.visible=true AND ((SELECT Count(A.ProdID) AS CountProdID FROM Articles AS A INNER JOIN ProdTypes AS PT ON A.ProdTypeID = PT.ProdTypeID WHERE PT.ProdcatID= PG.ProdcatID AND A.Deleted=False AND A.STOCK>0 AND A.NoShow=False)>0) Order By PG.SortOrder) as pcl ON pcl.parentID=p.prodcatid WHERE p.parentID=0 AND p.visible=1 Order By p.sortOrder,p.ProdCatID,pcl.ProdCatId; |
||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Mycket flitig postare
|
Citat:
![]() Senast redigerad av dAEk den 2010-11-09 klockan 20:05 |
|||
![]() |
![]() |
Svara |
|
|