Ich habe die folgenden zwei Abfragen, ich glaube, dass derjenige, der die drei Index-Scans (zweiter) statt einer vollen verwendet, effizienter ist, aber ich brauche ein paar mehr Meinungen. Wie kann ich aus den drei Zählwerten in der zweiten Abfrage eine Anzahl erhalten? Wie kann ich sie zu einem kombinieren?Welche Abfrage der beiden ist effizienter?
erste Abfrage
SELECT count(*) FROM bldng
WHERE (bldng_type LIKE '%PTR%' OR bldng_type LIKE '%FACILITY-A%'
OR bldng_type LIKE '%FACILITY-B%') AND area_sqf > 500
zweite Abfrage
SELECT count(*) FROM bldng WHERE bldng_type LIKE '%PTR%' AND area_sqf > 500
UNION ALL
SELECT count(*) FROM bldng WHERE bldng_type LIKE '%FACILITY-A%' AND area_sqf > 500
UNION ALL
SELECT count(*) FROM bldng WHERE bldng_type LIKE '%FACILITY-B%' AND area_sqf > 500
Ok das ist das Ergebnis kam ich mit, nachdem ich beiden Abfragen lief mit 'set statistics io auf'
First (Single Zeile) Abfrage:
Category Timestamp Duration Message Line Position
Connection 3/27/2012 2:36:49 PM 3615: Table 'bldng'. Scan count 1, logical reads 33320, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. 1 0
Zweite Abfrage:
Category Timestamp Duration Message Line Position
Connection 3/27/2012 2:38:15 PM 3615: Table 'bldng'. Scan count 15, logical reads 76703, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. 1 0
Category Timestamp Duration Message Line Position
Connection 3/27/2012 2:38:15 PM 3615: Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. 1 0
Ich bin nicht sicher, wie diese allerdings zu interpretieren. Vergleiche ich die logischen Lesevorgänge 33320 < 76703? Also die erste hat weniger, bedeutet es, dass es effizienter läuft?
Welche DBMS verwenden Sie? Haben Sie den Ausführungsplan jeder Abfrage überprüft? –
Auch diese Abfragen führen zwei verschiedene Dinge aus. Versuchen Sie, die Anzahl der Datensätze zu ermitteln, die allen Ihren Kriterien entsprechen? –
Datenbank ist SQL Server 2005 – dido