Stundtals timeout mot SQL servern vid sökning

Permalänk
Medlem

Stundtals timeout mot SQL servern vid sökning

Jag sköter dom tekniska bitarna på en mindresajt (www.svenskbusshistoria.se) på hobby nivå där vi har en del prestanda problem troligtvis orsakade av dåligt skrivna och tunga SQL frågor. Under gårdagen byggde jag ett script som sparar alla SQL frågor i en fil tillsammans med tiden dom tar att utföra och med eventuella felmeddelande. Detta blev totalt 77 239 SQL frågor under dygnet av både SELECT, INSERT, DELETE och UPDATE. Av dessa 77 239 frågor så tar 73 443 frågor <1 sekund att utföra, 3509 tar ca 1-3 sekunder och resterande 287 tar 4-30 sekunder att utföra (Varav 13 stycken gjorde timeout). Ur denna analysen har jag då precis som jag misstänkte identifierat en särskild fråga som sticker ut i mängden att vara tung (SQL frågan nedan):

SELECT DISTINCT bussar.cbr_Status, bussar.id,bussar.[Chassinummer],bussar.[Registreringsnummer],bussar.[arsmodell],bussar.[Registreringsdatum],bussar.[Avregistreringsdatum],bussar.[Avregistreringsorsak],bussar.[Chassitillverkare],bussar.[Chassityp],bussar.[Karosstillverkare],bussar.[Karosstyp],bussar.[Karossnummer],bussar.[Senastuppdaterad],bussar.[Bild],bussar.[skapad] FROM bussar LEFT OUTER JOIN bussOwner ON bussar.id = bussOwner.VecID LEFT OUTER JOIN OwnerIndex ON bussOwner.OwnerID = OwnerIndex.id WHERE (BussOwner.OwnerData LIKE '%BERGKVARABUSS%' OR OwnerIndex.OwnerName LIKE '%BERGKVARABUSS%' OR bussar.Chassinummer LIKE '%BERGKVARABUSS%' OR bussar.Registreringsnummer LIKE '%BERGKVARABUSS%' OR bussar.arsmodell LIKE '%BERGKVARABUSS%' OR bussar.Avregistreringsorsak LIKE '%BERGKVARABUSS%' OR bussar.Chassitillverkare LIKE '%BERGKVARABUSS%' OR bussar.Chassityp LIKE '%BERGKVARABUSS%' OR bussar.Karosstillverkare LIKE '%BERGKVARABUSS%' OR bussar.karosstyp LIKE '%BERGKVARABUSS%' OR bussar.Karossnummer LIKE '%BERGKVARABUSS%' OR bussar.Motor LIKE '%BERGKVARABUSS%' OR bussar.Motornummer LIKE '%BERGKVARABUSS%' OR bussar.Vaxellada LIKE '%BERGKVARABUSS%' OR bussar.Bakaxelutvaxling LIKE '%BERGKVARABUSS%' OR bussar.ovriginfo LIKE '%BERGKVARABUSS%') AND ShowInSBH = 1 ORDER BY arsmodell ASC

Jag har testat att köra denna fråga direkt med SQL management studio mot SQL servern på webbhotellet och ibland tar det väldigt långtid och ibland går det extremt fort, varför tiden skiljer sig vet jag inte riktigt men kanske beror på belastningen till webbhotellet? Ibland lämnar frågan bara ett resultat men det tar ändå väldigt långtid att söka upp resultatet.

Frågan ovan är själva sökmotorn i databasen (Den som finns på första sidan) och den söker i tre olika tabeller samtidigt:

  • Bussar - ca 58 000 poster

  • BussOwner - ca 122 000 poster

  • OwnerIndex - ca 17 000 poster

Min fråga är egentligen om detta rätt sätt att konstruera detta på, finns det andra snabbare lösningar och finns det annat som kan ligga bakom att det går otroligt sakta? Vi har ungefär 12 000 till 13 000 besökare i månaden men jag misstänker inte att detta borde vara något problem på webbhotellet? Vi använder oss av Binero.

Tacksam för svar eller bistå med mer information
//Sammy

Edit: Hade knarkat till stavningen lite

Stavning