Jag förstår inte avsikten med Stat_Searchengine_url.
Varför inte lagra url direkt i Stat_Searchengine?
Gör du en join med substring(referrer) = url?
Stat borde innehålla ett search_engine_idno som är foreign key till Stat_Searchengine.
4 svar · 299 visningar · startad av doggelito
Behöver lite riktlinjer över hur jag bör göra för att få en så snabb sidladdning som möjligt.
Har dessa tabeller idag:
Stat_Searchengine
. . . . . . . . . . . . . .
IDno Fullname
1 Google
2 MSN
Stat_Searchengine_url
. . . . . . . . . . . . . .
IDno SearchengineIDno Url
1 1 www.google.com
2 2 www.msn.se
Stat
. . . . . . . . . . . . . .
Referrer
www.google.com/search?q=abcde
Relationen mellan dessa är väl ganska tydlig.
Fråga:
Hur skriver jag selecten om jag vill visa hur många besökare som kommer ifrån Google?
Jag har en variant idag men den känns alldelens för trögladdad, därav min fråga. :)
Jag förstår inte avsikten med Stat_Searchengine_url.
Varför inte lagra url direkt i Stat_Searchengine?
Gör du en join med substring(referrer) = url?
Stat borde innehålla ett search_engine_idno som är foreign key till Stat_Searchengine.
Jag förstår inte avsikten med Stat_Searchengine_url.
Eftersom bla. google har ett flertal domäner så vill jag gruppera ihop dem alla under samma namn. Referrer kan komma ifrån google.se, .com osv.
Varför inte lagra url direkt i Stat_Searchengine?
Se ovan.
Gör du en join med substring(referrer) = url?
Använder en udf idag som ser ut så här:
ALTER FUNCTION ConvertUrl
(@Referrer varchar(1000))
RETURNS varchar(50)
AS
BEGIN
Declare @Ref as varchar(50)
Select @Ref = Fullname From Stat_Searchengine e
Inner Join Stat_Searchengine_Url u On e.IDno = u.SearchengineIDno
Where @Referrer Like '%'+u.Url+'%'
RETURN @Ref
END
Och körningen ser ut ungefär så här (9000 poster tar 30 sek. att hämta! :( )
Select e.Fullname,
(Select count(s.Referrer)
From Stat s
Where dbo.ConvertUrl(s.Referrer) = e.Fullname
)
From Stat_Searchengine e
Where e.Internal = 0
Stat borde innehålla ett search_engine_idno som är foreign key till Stat_Searchengine.
Mm, jag börjar också fundera på det, men då måste Google plockas ut redan vid Inserten istället.
Men det är väl kanske bättre då än som det är nu!
Jag vet inte men, det känns som om databasdesignen är helt ok, det gäller bara att göra rätt saker vid rätt tillfälle, antingen vid inserten eller efteråt vid selecten.
Och det är det jag känner mig osäker på! :)
Ok, jag förstår databasdesignen.
Ett villkor som
Where dbo.ConvertUrl(s.Referrer) = e.Fullname
kommer alltid att resultera i en sekventiell läsning av hela stat tabellen, så att plocka ut search engine redan vid insert verkar en bra åtgärd.
så att plocka ut search engine redan vid insert verkar en bra åtgärd.
Jag får prova den varianten, blir det inte bra så återkommer jag! :)