|
select distinct X from T =vs= select X from T group by X: первое... быстрее! Why ?
#38649217
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
|
|
|
|
hi all
Имеется табличка с именем QDISTR, в ней поле doc_id. Индекса по нему нет.
Вот фрагмент gstat -r -t QDISTR:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
QDISTR (143)
Primary pointer page: 242, Index root page: 243
Total formats: 1, used formats: 1
Average record length: 56.60, total records: 1775329
Average version length: 0.00, total versions: 0, max versions: 0
Average fragment length: 20.31, total fragments: 35224, max fragments: 1
Average unpacked length: 112.00, compression ratio: 1.98
Pointer pages: 4, data page slots: 13975
Data pages: 12204, average fill: 67%
Primary pages: 11202, full pages: 9169, swept pages: 6318
Fill distribution:
0 - 19% = 1185
20 - 39% = 532
40 - 59% = 612
60 - 79% = 8724
80 - 99% = 1151
Есть два запроса, запускались по пять раз каждый:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Database: localhost/3333:oltp30
SQL> out /dev/null;
SQL> select distinct q.doc_id from qdistr q;
SQL> select distinct q.doc_id from qdistr q;
SQL> select distinct q.doc_id from qdistr q;
SQL> select distinct q.doc_id from qdistr q;
SQL> select distinct q.doc_id from qdistr q;
SQL> select q.doc_id from qdistr q group by q.doc_id;
SQL> select q.doc_id from qdistr q group by q.doc_id;
SQL> select q.doc_id from qdistr q group by q.doc_id;
SQL> select q.doc_id from qdistr q group by q.doc_id;
SQL> select q.doc_id from qdistr q group by q.doc_id;
И вот что вижу в трейсе (конкурир. активности на хосте нету):
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174.
Trace session ID 11 started
2014-05-22T16:17:51.5550 (11623:0x7f9bfed380c8) TRACE_INIT
SESSION_11
2014-05-22T16:17:54.2030 (11623:0x7f9bfed380c8) EXECUTE_STATEMENT_FINISH
oltp30 (ATT_1053, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
/opt/fb30trnk/bin/isql:30941
(TRA_2016004, CONCURRENCY | WAIT | READ_WRITE)
Statement 2760886:
-------------------------------------------------------------------------------
select distinct q.doc_id from qdistr q
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN SORT (Q NATURAL)
10074 records fetched
1934 ms, 3608450 fetch(es)
Table Natural Index Update Insert Delete Backout Purge Expunge
***************************************************************************************************************
QDISTR 1775329
2014-05-22T16:18:00.2710 (11623:0x7f9bfed380c8) EXECUTE_STATEMENT_FINISH
oltp30 (ATT_1053, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
/opt/fb30trnk/bin/isql:30941
(TRA_2016004, CONCURRENCY | WAIT | READ_WRITE)
Statement 2760888:
-------------------------------------------------------------------------------
select distinct q.doc_id from qdistr q
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN SORT (Q NATURAL)
10074 records fetched
1929 ms, 3608450 fetch(es)
Table Natural Index Update Insert Delete Backout Purge Expunge
***************************************************************************************************************
QDISTR 1775329
2014-05-22T16:18:06.9420 (11623:0x7f9bfed380c8) EXECUTE_STATEMENT_FINISH
oltp30 (ATT_1053, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
/opt/fb30trnk/bin/isql:30941
(TRA_2016004, CONCURRENCY | WAIT | READ_WRITE)
Statement 2760889:
-------------------------------------------------------------------------------
select distinct q.doc_id from qdistr q
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN SORT (Q NATURAL)
10074 records fetched
1928 ms, 3608450 fetch(es)
Table Natural Index Update Insert Delete Backout Purge Expunge
***************************************************************************************************************
QDISTR 1775329
2014-05-22T16:18:12.3660 (11623:0x7f9bfed380c8) EXECUTE_STATEMENT_FINISH
oltp30 (ATT_1053, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
/opt/fb30trnk/bin/isql:30941
(TRA_2016004, CONCURRENCY | WAIT | READ_WRITE)
Statement 2760890:
-------------------------------------------------------------------------------
select distinct q.doc_id from qdistr q
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN SORT (Q NATURAL)
10074 records fetched
1928 ms, 3608450 fetch(es)
Table Natural Index Update Insert Delete Backout Purge Expunge
***************************************************************************************************************
QDISTR 1775329
2014-05-22T16:18:17.0000 (11623:0x7f9bfed380c8) EXECUTE_STATEMENT_FINISH
oltp30 (ATT_1053, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
/opt/fb30trnk/bin/isql:30941
(TRA_2016004, CONCURRENCY | WAIT | READ_WRITE)
Statement 2760891:
-------------------------------------------------------------------------------
select distinct q.doc_id from qdistr q
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN SORT (Q NATURAL)
10074 records fetched
1928 ms, 3608450 fetch(es)
Table Natural Index Update Insert Delete Backout Purge Expunge
***************************************************************************************************************
QDISTR 1775329
2014-05-22T16:18:32.7330 (11623:0x7f9bfed380c8) EXECUTE_STATEMENT_FINISH
oltp30 (ATT_1053, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
/opt/fb30trnk/bin/isql:30941
(TRA_2016004, CONCURRENCY | WAIT | READ_WRITE)
Statement 2760892:
-------------------------------------------------------------------------------
select q.doc_id from qdistr q group by q.doc_id
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN SORT (Q NATURAL)
10074 records fetched
2468 ms, 3608450 fetch(es)
Table Natural Index Update Insert Delete Backout Purge Expunge
***************************************************************************************************************
QDISTR 1775329
2014-05-22T16:18:41.8810 (11623:0x7f9bfed380c8) EXECUTE_STATEMENT_FINISH
oltp30 (ATT_1053, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
/opt/fb30trnk/bin/isql:30941
(TRA_2016004, CONCURRENCY | WAIT | READ_WRITE)
Statement 2760893:
-------------------------------------------------------------------------------
select q.doc_id from qdistr q group by q.doc_id
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN SORT (Q NATURAL)
10074 records fetched
2468 ms, 3608450 fetch(es)
Table Natural Index Update Insert Delete Backout Purge Expunge
***************************************************************************************************************
QDISTR 1775329
2014-05-22T16:18:45.6050 (11623:0x7f9bfed380c8) EXECUTE_STATEMENT_FINISH
oltp30 (ATT_1053, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
/opt/fb30trnk/bin/isql:30941
(TRA_2016004, CONCURRENCY | WAIT | READ_WRITE)
Statement 2760894:
-------------------------------------------------------------------------------
select q.doc_id from qdistr q group by q.doc_id
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN SORT (Q NATURAL)
10074 records fetched
2468 ms, 3608450 fetch(es)
Table Natural Index Update Insert Delete Backout Purge Expunge
***************************************************************************************************************
QDISTR 1775329
2014-05-22T16:18:48.8950 (11623:0x7f9bfed380c8) EXECUTE_STATEMENT_FINISH
oltp30 (ATT_1053, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
/opt/fb30trnk/bin/isql:30941
(TRA_2016004, CONCURRENCY | WAIT | READ_WRITE)
Statement 2760895:
-------------------------------------------------------------------------------
select q.doc_id from qdistr q group by q.doc_id
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN SORT (Q NATURAL)
10074 records fetched
2467 ms, 3608450 fetch(es)
Table Natural Index Update Insert Delete Backout Purge Expunge
***************************************************************************************************************
QDISTR 1775329
2014-05-22T16:18:52.1130 (11623:0x7f9bfed380c8) EXECUTE_STATEMENT_FINISH
oltp30 (ATT_1053, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
/opt/fb30trnk/bin/isql:30941
(TRA_2016004, CONCURRENCY | WAIT | READ_WRITE)
Statement 2760896:
-------------------------------------------------------------------------------
select q.doc_id from qdistr q group by q.doc_id
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN SORT (Q NATURAL)
10074 records fetched
2468 ms, 3608450 fetch(es)
Table Natural Index Update Insert Delete Backout Purge Expunge
***************************************************************************************************************
QDISTR 1775329
Дифферент = 500 мс. Не в пользу group by. Какая тёмная сила это делает ?
|
|
|