Avatar billede tuctoh Nybegynder
23. juni 2003 - 13:47 Der er 16 kommentarer og
1 løsning

SQL Sætning timer altid ud nu!!

Hej,

denne SQL sætning som jeg har kørt i flere år nu uden problemer er lige pludselig stoppet helt med at virke!
Den timer bare ud...

her er den:

SELECT c.membername, c.status, m.power, m.lastvisit, c.rgive, c.id, c.job FROM clans_members as c, members as m WHERE c.membername = m.membername AND c.clanid = 300 AND c.status <> 2 ORDER BY m.power DESC

ikke den vildeste sætning, men den burde da ikke time ud :s
Selv hvis jeg prøver i query analyzer sker der ikke noget! Der kommer ingen resultater whatsoever.
Sætningen burde bare skrive max 20 linier ud... ikke særligt meget, og en sætning som blev kørt tusindevis af gange om dagen.

Hvis i kan hjælpe mig er der massere points at give af... ethvert hint vil være til hjælp.
Avatar billede bennytordrup Nybegynder
23. juni 2003 - 13:51 #1
Hvor mange poster er der i members og clans_members? Har du indeks på join-felterne?
Avatar billede bennytordrup Nybegynder
23. juni 2003 - 13:51 #2
Er serveren belastet af andre ting?
Avatar billede tuctoh Nybegynder
23. juni 2003 - 13:53 #3
serveren er ret belastet... men ikke mere end normalt. I clans_members er der en 5,000 poster, og lidt over 20,000 poster i members.
Ikke særligt meget...

Jeg lavede før denne fejl kom en mindre ændring i tabellen members, nemlig at jeg satte et nvarchar felt til 500 i stedet for 255... det er et felt som slet ikke bliver selected her. Jeg kan ikke rigtigt forestille mig at det er det som gør forskellen :s
Avatar billede bennytordrup Nybegynder
23. juni 2003 - 13:54 #4
Prøv at poste strukturen på de to tabeller inklusive indeks.
Avatar billede tuctoh Nybegynder
23. juni 2003 - 13:58 #5
damn, der er alt for meget at poste :s i members er der vel en 50+ felter.

der er index på membername i members, men ingen indexes i clans_members...
det er ikke den her type sætninger som bliver kørt oftest på min server, derfor er indexes ikke optimeret til netop den her. Alt andet på serveren virker nemlig perfekt; alle andre queries som tager fat i de to tabeller virker.


Mens jeg skriver det her har query analyzer arbejdet på at køre sætningen... den er lige blevet færdig, og fik faktisk de rigtige resultater - bare efter mange minutter!
Er der noget af de info som den har skrevet ud, som du kan bruge? Jeg har aldrig brugt query analyzer før, så ved ikke om noget af det kan hjælpe :s
Avatar billede tuctoh Nybegynder
23. juni 2003 - 14:06 #6
ang. den ændring jeg lavede i databasen, har jeg nu ændret den tilbage til det den var... det hjalp intet somhelst :( stadig samme problemer.
Avatar billede bennytordrup Nybegynder
23. juni 2003 - 14:06 #7
Execution plan
Avatar billede tuctoh Nybegynder
23. juni 2003 - 14:10 #8
screendump af execplan:
www.secretsofwar.net/test/1_execplan.jpg

hjælper det noget som helst?
Avatar billede bennytordrup Nybegynder
23. juni 2003 - 14:12 #9
Der bliver lavet table scan på begge tabeller i stedet for evt. index seek.

Prøv at lave et indeks på m.Power samt MemberName, clanid og status på clans_members
Avatar billede tuctoh Nybegynder
23. juni 2003 - 14:17 #10
lavede kun index på membername og clanid i clans_members - og nu virker det!!!

det er lidt langsomt - men det virker.

Kan du fortælle mig HVORFOR, og eventuelt hvad der kan gøres for at få det til at gå lidt hurtigere?
Indexes bruges så vidt jeg husker normalt kun for at gøre søgning i felterne nemmere... derfor vil et index på power og status vel ikke gøre en forskel, da der ALDRIG søges på deres værdi!?
Avatar billede bennytordrup Nybegynder
23. juni 2003 - 14:23 #11
Du søger på power og status gennem din where-betingelse.


Jeg vil anbefale dig en bog at læse: Ken England: Microsfot SQL Server 2000 Performance Optimization and Tuning Handbook (ISBN: 1-55558-241-9). Den indeholder en god gennemgang af den måde, Query Optimizeren i SQL Server arbejder på. Desuden giver den god gennemgang af den måde, data lagres samt den måde indeks er bygget op.
Avatar billede bennytordrup Nybegynder
23. juni 2003 - 14:23 #12
Du kan evt. bruge Index Tuning Wizard i Query Analyzer og se, om det giver noget.
Avatar billede tuctoh Nybegynder
23. juni 2003 - 14:27 #13
tjaa, har kørt index tuning wizard førhen... hjalp da en del.
Men hvordan kan det dog være at fejlen opstår så pludseligt??
Avatar billede tuctoh Nybegynder
23. juni 2003 - 14:52 #14
ok, gav mig en ENORM hastighedsforøgelse at lave indexet på members/membername til clustered... ikke dårligt :D
Avatar billede Slettet bruger
23. juni 2003 - 20:27 #15
Måske din databaselog er ved at være stor? Hvordan ser det ud med disk pladsen på SQL serveren?
Avatar billede tuctoh Nybegynder
23. juni 2003 - 21:50 #16
der er stadig en 15 gigabytes ledig... databasen er *kun* 2 gigs eller deromkring.
Så jeg tror ikke pladsen er problemet :s
Avatar billede Slettet bruger
24. juni 2003 - 19:10 #17
OK, var også bare et forslag :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Sektionschef til Enterprise Arkitektur i Forsvaret på Østerbro

Netcompany A/S

Test Consultant

Netcompany A/S

Linux Operations Engineer

IT-Universitetet i København

CIO