OracleMiracle
Дата: 23.09.2015 18:04:18
Всем привет!
Пишу про Оракл, но на деле применимо к любой базе.
Вопрос такой: у нас есть большая таблица в которую надо делать разные запросы. Может, всю целиком ее скачивать, а может искать там что-то и использовать разные Оракл-функции.
Может ли для уменьшения времени выполнения запросов нам помочь простой трюк: разбиение таблицы на условные под-таблицы и их отдельное опрашивание в параллельных запросах?
Другими словами, если у нас есть поле-индекс id и таблица в 3тыс строк, то будут ли такие запросы выполняться быстрее?
select ... from ... where id < 1000
select ... from ... where id < 2000 and id>=1000
select ... from ... where id < 3000 and id>2=000
Зависит ли это от типа запроса, от применяемых в нем функций? Какая степень "параллельности" допускается, как это понять?
PS
И отдельный вопрос вдогонку: нет ли документации где описан стандартное время выполнения sql запроса в o-нотации, например: поиск значения в индексированной колонке - log(n), full fetch - n etc ?
dbms_photoshop
Дата: 23.09.2015 18:24:30
OracleMiracle,
Про секционирование что-то слышал?
PS. Для о-нотации полезно иметь представление про "стуктуры данных и алгоритмы".
С этими знаниями несложно догадаться про зависимость от числа элементов, зная что индекс - это b*tree дерево и прочее.
ArtNick
Дата: 24.09.2015 13:49:11
OracleMiracle,
Стесняюсь спросить, а Вы оценивали свою идею с точки зрения блочного хранения данных?
Вы анализировали на своих данных статистику выполнения вариантов запросов?