|
|
|
Быстрое соединение только одной детали к мастеру
|
|||
|---|---|---|---|
|
#18+
Firebird 2.5, Windows 7 Есть 2 таблицы - дел и документов. Связь 1 ко многим. Ключ составной по 2 целым полям. В первой 200 тыс записей, во второй почти 2 млн. Нужно создать запрос, где к каждому делу будет привязан один ЛЮБОЙ документ - цимус в том, что нужно видеть, что документы есть, а какие - можно посмотреть в детальной таблице (по доп.запросу). Основная проблема - в скорости. Какой наиболее быстрый путь тут может быть? Таблицы(полей там масса, оставлены только те, что участвуют в запросе) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Данные Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Хочу получить так Код: plaintext Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. План План PLAN (T NATURAL) PLAN JOIN (T1 NATURAL, T2 INDEX (FK_T_DOCUMENT1)) ------ Информация о производительности ------ Время подготовки запроса = 0ms Время выполнения запроса = 51m 13s 95ms Среднее время на получение одной записи = 99 132,10 ms Current memory = 88 393 832 Max memory = 88 732 984 Memory buffers = 10 000 Reads from disk to cache = 110 721 546 Writes from cache to disk = 0 Чтений из кэша = -183 366 Можно быстрее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:04 |
|
||
|
Быстрое соединение только одной детали к мастеру
|
|||
|---|---|---|---|
|
#18+
X_ginger, selectable EXECUTE BLOCK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:11 |
|
||
|
Быстрое соединение только одной детали к мастеру
|
|||
|---|---|---|---|
|
#18+
X_ginger, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:13 |
|
||
|
Быстрое соединение только одной детали к мастеру
|
|||
|---|---|---|---|
|
#18+
X_gingerцимус в том, что нужно видеть, что документы есть Для этого не надо выбирать записи: Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:13 |
|
||
|
Быстрое соединение только одной детали к мастеру
|
|||
|---|---|---|---|
|
#18+
Получилось вот так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. План PLAN JOIN (JOIN (T1 NATURAL, JOIN (T T1 ORDER FK_DOCUMENT1 INDEX (PK_CAUSE), T T2 INDEX (FK_DOCUMENT1))), T2 INDEX (PK_DOCUMENT)) ------ Информация о производительности ------ Время подготовки запроса = 15ms Время выполнения запроса = 0ms Среднее время на получение одной записи = 0,00 ms Current memory = 91 168 536 Max memory = 100 176 760 Memory buffers = 10 000 Reads from disk to cache = 384 Writes from cache to disk = 0 Чтений из кэша = 6 594 Данные те же... Однако странно - сложнее запрос, длиннее план, но быстрее очень ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 12:09 |
|
||
|
Быстрое соединение только одной детали к мастеру
|
|||
|---|---|---|---|
|
#18+
X_gingerОднако странно - сложнее запрос, длиннее план, но быстрее очень Мой запрос был бы ещё быстрее и с очень коротким планом. Ты его пробовал вообще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 12:57 |
|
||
|
Быстрое соединение только одной детали к мастеру
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovX_gingerОднако странно - сложнее запрос, длиннее план, но быстрее очень Мой запрос был бы ещё быстрее и с очень коротким планом. Ты его пробовал вообще? :) Он конечно быстрее, но... Требование такое - должен быть указан документ, а не его наличие. С exists собственно начали, но заказчику не нра ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:51 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=88&tid=1563290]: |
0ms |
get settings: |
6ms |
get forum list: |
23ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
87ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 422ms |

| 0 / 0 |
