Oracle: COUNT(*) vs COUNT(1) – ostateczne starcie

30 października 2015, Monika Mitura

Po artykule Count(1) or count(*) oto jest pytanie padło wiele pytań w szczególności o dowód na to, że Oracle wewnętrznie przepisuje funkcję COUNT(1) na postać COUNT(*).

W związku z tym przedstawiam sposób, jak samodzielnie się o tym przekonać!

1. Utworzenie tabeli CNT_TEST

2. Uruchomienie TRACE 10053

3. Wykonanie zapytania

3. Zatrzymanie TRACE

4. wyszukanie id zapytania

5. Zapis pliku TRACE

6. w pliku TRACE wyszukujemy informacja o transformacji zapytania ‚Final query after transformations:’
W tym przypadku otrzymujemy taki wynik:

 

Wyniki testu:

Count(*) select count(*) cnt_str from all_objects; Final query after transformations:******* UNPARSED QUERY IS *******SELECT COUNT(*) „CNT_STR” FROM „SYS”.”CNT_TEST” „CNT_TEST”
Count(1) select count(1) cnt_1 from all_objects; Final query after transformations:******* UNPARSED QUERY IS *******SELECT COUNT(*) „CNT_1” FROM „SYS”.”CNT_TEST” „CNT_TEST”
Count(id) – count na kolumnie Primary Key select count(id) cnt_id from all_objects; Final query after transformations:******* UNPARSED QUERY IS *******SELECT COUNT(*) „CNT_ID” FROM „SYS”.”CNT_TEST” „CNT_TEST”
count(object_id) –count na kolumnie not NULL select count(object_id) cnt_not_null_coll from all_objects; Final query after transformations:******* UNPARSED QUERY IS *******SELECT COUNT(*) „CNT_NOT_NULL_COLL” FROM SYS.”OBJ$” „SYS_ALIAS_16″,SYS.”USER$”
Count(OBJECT_TYPE) –count na kolumnie nullable select count(OBJECT_TYPE) cnt_nullable from all_objects; Final query after transformations:******* UNPARSED QUERY IS *******SELECT COUNT(DECODE(„SYS_ALIAS_17″.”TYPE#”,0,’NEXT OBJECT’,1,’INDEX’,2,

Wpis był oryginalnie opublikowany na moim blogu how2ora.blogspot.com

Tagi: , , , , ,

Zapraszamy do kontaktu!

Pretius jest firmą tworząca oprogramowanie wspierające biznes.
Tworzymy aplikacje webowe wykorzystując: Java, Oracle DB, Oracle Apex, AngularJS.
Skontaktuj się z nami, aby porozmawiać o tym jak możemy pomóc w realizacji Twojego projektu!