Toon posts:

[SQL] uitvoeren query duurt 15sec.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Onderstaande query duurt, op een tabel met in totaal 1150 records, rond de 15seconden.

code:
1
2
3
4
5
6
7
8
9
10
SELECT wfa.*, 
CASE COUNT(wfap.id) WHEN 0 THEN 0 ELSE CAST((SUM(CASE wfap.set_bool WHEN 'false' THEN 0 WHEN 'true' THEN 1 END) * 100) AS float) / COUNT(wfap.assignment_id) END AS perc_done,
CASE WHEN wfa.date_time IS NULL THEN '0' ELSE '1' END AS sort_id
FROM wf_assignment AS wfa
LEFT JOIN wf_assignment_procedure as wfap ON wfap.assignment_id = wfa.id, wf_assignment_procedure
WHERE (wfa.procedure_description LIKE '%BEWAKING%') AND wfa.project_id = '1'
GROUP BY wfa.id,wfa.date_time,wfa.project_id,wfa.in_user,wfa.in_date_time,wfa.mut_user,wfa.mut_date_time,wfa.procedure_description,wfa.procedure_version_number
ORDER BY sort_id ASC, 
 wfa.date_time DESC, 
 wfa.in_date_time DESC

Heeft iemand enig idee waarom het opvragen van de gegevens zo lang duurt?
En hoe kan deze query versneld worden....?

database gegevens:
Microsoft SQL Server (MSDE 2000)
Borland Delphi 7

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 19:55

TeeDee

CQB 241

De eerste 2 3 dingen die mij te binnen schieten:

• Staan de indices goed?
• Je zou imho beter de casts e.d. richting je applicatie kunnen verhuizen.
• De 'LIKE' in je query is afaik ook een performance killer, maar dat zou weer goed getrokken kunnen worden door je indices goed te checken.
kenneth schreef op maandag 19 juni 2006 @ 16:57:
Heb je ergens toegang tot de client tools van MSSQL2000? Dan kan je het Execution Plan bekijken in de Query Analyzer.
Goeie, die was ik nog vergeten :)

[ Voor 67% gewijzigd door TeeDee op 19-06-2006 16:58 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Heb je ergens toegang tot de client tools van MSSQL2000? Dan kan je het Execution Plan bekijken in de Query Analyzer.

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Verwijderd schreef op maandag 19 juni 2006 @ 16:47:

LEFT JOIN wf_assignment_procedure as wfap ON wfap.assignment_id = wfa.id, wf_assignment_procedure
Ik heb het idee dat het vetgedrukte gewoon weg kan. Dat scheelt m.i. een loos carthesisch product.

[ Voor 2% gewijzigd door Varienaja op 19-06-2006 17:21 . Reden: typo ]

Siditamentis astuentis pactum.


  • whoami
  • Registratie: December 2000
  • Laatst online: 19:13
[quote]TeeDee schreef op maandag 19 juni 2006 @ 16:53:
• De 'LIKE' in je query is afaik ook een performance killer, maar dat zou weer goed getrokken kunnen
Een LIKE met een wildcard aan het begin van het zoekcriterium (zoals dat bij de query van de TS het geval is), zal geen index gebruiken.
Ik heb het idee dat het vetgedrukte gewoon weg kan. Dat scheelt m.i. een loos carthesisch product.
Dat zal inderdaad de boosdoener zijn.

Indexen kunnen ook zeker helpen om de performantie van een query te verbeteren, maar, als er slechts 1250 records in een tabel zitten, en de query duurt dan al 15sec, dan zal de oorzaak niet bij de indexen liggen. (Het kan zelfs goed zijn dat Sql Server besluit om die indexen niet eens te gebruiken als er niet veel gegevens in de tabel zitten, of als de indexen niet uniek genoeg zijn).

[ Voor 45% gewijzigd door whoami op 19-06-2006 17:24 ]

https://fgheysels.github.io/


Verwijderd

Wat voor driver gebruik je om je database te benaderen?

Shouts to JQ

[ Voor 22% gewijzigd door Verwijderd op 19-06-2006 18:40 ]


Verwijderd

Wat gebeurt er als je de tweede regel er tijdelijk uithaalt?
Ik zou ook nog even een index leggen op alle velden in de GROUP BY.
wfa.project_id is een string?
Wat is de bedoeling van "wf_assignment_procedure" op regel 5?

[ Voor 28% gewijzigd door Verwijderd op 19-06-2006 22:13 ]


Verwijderd

Topicstarter
"wf_assignment" op regel 5 was inderdaad de boosdoener. Wat de bedoeling van die tabel op regel 5 was, is me ook niet helemaal duidelijk. Ik weet niet waarom ik dat er neergezet hebt.....dus schrappen die tabel...

Nadat ik deze tabel had weggehaald doet deze query er minder over dan een sec, dat is heel wat beter dan 15sec.

I.i.g. allemaal bedankt voor de goede hulp, input en suggesties!!!
Pagina: 1