|
|
|
составной запрос
|
|||
|---|---|---|---|
|
#18+
anpl, Код: sql 1. 2. 3. 4. 5. а если вот так? мне кажется тут дело не в left/inner а в том что s.typeseason = 'студенческий 8' в условие соединения воткнуто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 12:41:02 |
|
||
|
составной запрос
|
|||
|---|---|---|---|
|
#18+
Тут дело в том что смотря в какой таблице будет больше всего данных! в 90% случаях первый селект будет выполнятся быстрей... но если в таблице season будет мало строк, а остальные таблицы будут тяжелые (пару миллионов строк) то скорость выполнения будет одинаковой. А по логике во втором запросе сначала джойнится вся таблица clientseason и client с season а потом только отсекается лишнее, в первом варианте отсекается все лишнее а потом идет джоин ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 12:46:01 |
|
||
|
составной запрос
|
|||
|---|---|---|---|
|
#18+
anplпервый план на Код: sql 1. 2. 3. 4. 5. второй Код: sql 1. 2. 3. 4. японский бог, мой первый ответ был на 15860270 там лефтом и не пахнет а когда отвечал на это 15860427 то на запросы просто не обратил внимания ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 12:48:18 |
|
||
|
составной запрос
|
|||
|---|---|---|---|
|
#18+
Симонов Денисanpl, Код: sql 1. 2. 3. 4. 5. а если вот так? мне кажется тут дело не в left/inner а в том что s.typeseason = 'студенческий 8' в условие соединения воткнуто и вот так Код: sql 1. 2. 3. 4. То время планы и время выполнения должны быть одинаковые ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 12:54:26 |
|
||
|
составной запрос
|
|||
|---|---|---|---|
|
#18+
anpl, оптимизатор для того и существует чтобы самому определять с каких таблиц начинать соединение. Кроме того, у меня подозрение, что Plan PLAN JOIN (CL NATURAL, CS INDEX (RDB$FOREIGN59), S INDEX (RDB$PRIMARY23)) не может быть от запроса Код: sql 1. 2. 3. 4. т.к. в нём нет таблицы с алиасом CL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 12:56:35 |
|
||
|
составной запрос
|
|||
|---|---|---|---|
|
#18+
Симонов Денисanpl, оптимизатор для того и существует чтобы самому определять с каких таблиц начинать соединение. Кроме того, у меня подозрение, что Plan PLAN JOIN (CL NATURAL, CS INDEX (RDB$FOREIGN59), S INDEX (RDB$PRIMARY23)) не может быть от запроса Код: sql 1. 2. 3. 4. т.к. в нём нет таблицы с алиасом CL Код: sql 1. 2. 3. 4. вот так выглядел селект Ладно не хочу спорить! Что вам мешает сейчас взять и сделать подобные селекты? По поводу Код: sql 1. 2. 3. 4. 5. Plan PLAN JOIN (CL NATURAL, CS INDEX (RDB$FOREIGN59), S INDEX (RDB$PRIMARY23)) Adapted Plan PLAN JOIN (CL NATURAL, CS INDEX (FK_CLIENT_CLIENTSEASON_CLIENTID), S INDEX (INTEG_52)) ------ Performance info ------ Prepare time = 0ms Execute time = 609ms Avg fetch time = 304,50 ms Current memory = 10 562 264 Max memory = 18 250 804 Memory buffers = 256 Reads from disk to cache = 3 356 Writes from cache to disk = 0 Fetches from cache = 226 301 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 13:06:36 |
|
||
|
составной запрос
|
|||
|---|---|---|---|
|
#18+
anpl, у меня цель не спорить. Если оптимизатор не понимает чего-то, то его надо научить, т.е. необходимо разобраться почему так и возможно написать тикет в трекер. Что касается последнего запроса, то я вот не понимаю почему оптимизатор не стал применять индекс SEASON_TYPESEASON и сам не догадался что дешевле будет зайти с таблицы season s. Единственная пока догадка что значения в этом поле распределены слишком неравномерно, т.е. большинство записей typeseason <> 'студенческий 8', но при этом равны какому-то другому значению многократно повторяющемуся. Таким образом, индекс имеет плохую селективность, а гистограммы значений пока не поддерживаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 13:27:00 |
|
||
|
составной запрос
|
|||
|---|---|---|---|
|
#18+
Симонов Денисanpl, у меня цель не спорить. Если оптимизатор не понимает чего-то, то его надо научить, т.е. необходимо разобраться почему так и возможно написать тикет в трекер. Что касается последнего запроса, то я вот не понимаю почему оптимизатор не стал применять индекс SEASON_TYPESEASON и сам не догадался что дешевле будет зайти с таблицы season s. Единственная пока догадка что значения в этом поле распределены слишком неравномерно, т.е. большинство записей typeseason <> 'студенческий 8', но при этом равны какому-то другому значению многократно повторяющемуся. Таким образом, индекс имеет плохую селективность, а гистограммы значений пока не поддерживаются. вы правильно рассуждаете... в таблице SEASON 100к записей и только одна 'студенческий 8' и в clientseason 10 записей в client 30 Я выше упоминал... что огромное значение имеет размеры каждой из таблиц... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 13:40:59 |
|
||
|
составной запрос
|
|||
|---|---|---|---|
|
#18+
anpl, дело не в размерах, а в равномерности распределений значений TYPESEASON. В большинстве случаев оптимизатор сам способен выбрать порядок соединения таблиц учитывая их размер и селективность индексов. http://www.ibase.ru/devinfo/dataaccesspaths.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 13:47:10 |
|
||
|
составной запрос
|
|||
|---|---|---|---|
|
#18+
в clientseason 10 записей в client 30 извиняюсь... дезинформировал в clientseason 30 строк в client 10 строк ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 13:47:32 |
|
||
|
составной запрос
|
|||
|---|---|---|---|
|
#18+
Симонов Денисanpl, дело не в размерах, а в равномерности распределений значений TYPESEASON. В большинстве случаев оптимизатор сам способен выбрать порядок соединения таблиц учитывая их размер и селективность индексов. http://www.ibase.ru/devinfo/dataaccesspaths.htm Не поверите! именно эта ссылка у меня уже минут 10 открыта ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2014, 13:49:17 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38611190&tid=1563716]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
216ms |
get topic data: |
23ms |
get forum data: |
2ms |
get page messages: |
81ms |
get tp. blocked users: |
2ms |
| others: | 250ms |
| total: | 601ms |

| 0 / 0 |
