У меня есть следующие два запроса, я считаю, что тот, который использует три сканирования индекса (второй), а не полный, более эффективен, но мне нужно больше мнений. Кроме того, как я могу получить один счет из трех счетчиков во втором запросе? Как я могу объединить их в один?
Первый запрос
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
Второй запрос
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
Хорошо, это результат, который я получил после того, как запустил оба запроса с 'set statistics io on'
Первый (однострочный) запрос:
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
Второй запрос:
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
Хотя я не уверен, как это интерпретировать. Сравнивать ли логические чтения 33320 <76703? То есть у первого меньше, значит ли это, что он работает более эффективно? </p>