|
Производительность запроса.
|
|||
---|---|---|---|
#18+
Доброе утро! Коллеги, помогите советом. В первый раз просто написал запрос, скорость не устроила. Сейчас(см. ниже), вынес в отдельные две временные таблицы, чтобы не "таскать" лишние колонки по запросу. Скорость не улучшилась, может даже стала хуже. Что можно сделать? Как улучшить производительность? Спасибо! Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2015, 08:54 |
|
Производительность запроса.
|
|||
---|---|---|---|
#18+
Как понимаю надо выбрать все отрезки длиной менее ThisForm.Text1.Value Такой запрос не оптимизируется. Не заточен SQL для алгоритмических задач. Идет перебор всех вариантов. По сколько записей в таблицах temp1 и temp2? Их произведение это перебираемое количество вариантов. Немного соптимизировать можно следующее: 1. Избавься от лишних вычислений. Не пиши VAL(ThisForm.Text1.Value), а сначала сохрани в переменную и замени корень на квадрат Код: sql 1. 2.
2. Сначала выкинь отрезки заведомо длиннее нужного Код: sql 1. 2.
тут можно попробовать добиться использования индексов. PS По хорошему надо алгоритмы соответствующие искать, думаю математики что-нибудь быстрое изобрели для похожих задач. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2015, 10:04 |
|
|
start [/forum/topic.php?fid=41&tid=1582394]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 326ms |
total: | 480ms |
0 / 0 |