|
|
|
| Всем привет!
Вопрос такой: есть представление - запрос к определённой таблице, в таблице сейчас порядка 40000 строк, при выполнении запроса на основе которого построено представление в explain plan выдаёт информацию что использовано порядка 200 строк из таблицы, время выполнения запроса 0,016с, тут всё в порядке.
При попытке выполнить запрос на основе данного представления с дополнительными ограничениями поиска (where...) explain plan выдаёт что сначала выполняется полный просмотр представления (порядка 20000 строк) а потом только срабатывает условие поиска, соответственно время выполнения такого запроса значительно выше (0,563 с)
Почему так происходит? Необходимо исключить просмотр всех строк представления, т.к. при дальнейшем росте размера таблицы запрос будет выполняться ещё медленнее.
Заранее спасибо. | |
|
|
|
|
|
|
|
для: ronin80
(05.05.2008 в 10:05)
| | И ещё такой вопрос - что лучше построить вложенный запрос (несколько уровней вложенности) или создать несколько представлений обозначающих каждый уровень вложенности?
Запросы сложные, многотабличные с группировкой и т.д. и т.п., поэтому и спрашиваю. | |
|
|
|
|
|
|
|
для: ronin80
(05.05.2008 в 10:08)
| | С точки зрения производительности - скорее всего не имеет значения каким путём вы пойдёте. | |
|
|
|
|
|
|
|
для: ronin80
(05.05.2008 в 10:05)
| | Хм... а конструкция WHERE всегда так влияет - нужно индексировать данные... | |
|
|
|
|
|
|
|
для: cheops
(05.05.2008 в 13:09)
| | так поле по которому происходит отбор проиндексировано
вопрос в том почему когда делаю прямой запрос (тело представления) отбирает 200 строк, а когда делаю запрос через представление просматривает всё представление? | |
|
|
|