Нужен совет, есть торговая система в в которой доступ к данныи из приложения построен на вьюшках( вьюшки соединяют до 5-10 таблиц+ другие вьюшки+ поля с функциями) понятно дело одним селектом, соответсвенно планы неоптимальные либо оптимизатор отваливается по таймаутут и выдает планы неоптимальные. Используются вьюшки , т.к в интерфесах полно фильтров . соответснно добавив фильтп пользователем, этот фильтр накладывается на вьюку делается запрос к базе. Пытаюсь оптимизировать, все это делается через временные таблицы, соединения упрощаю на несколько , чтобы за раз не соединять все таблицы и т.д, эффект есть, запросы лучше отрабатывают, планы гууд, но как сделать так чтобы функционал приложения остался прежним, чтобы пользователь мог делать фильтры? Я не помню, как то во вюшках можно использовать процедуры и т.д?
Временные таблицы — иногда нужны, но тупо через них оптимизировать бесполезно, ты только хуже будешь делать скорее всего.
Ведь во временную таблицу надо сначала ЗАПИСАТЬ, а потом из неё ПРОЧИТАТЬ. По сравнению с исходным запросом проигрыш в ТРИ РАЗА.
Но не всего IO запроса, конечно.
Это НЕ ВСЕГДА ТАК, иногда временные позволяют именно оптимизировать запрос, но тут надо смотреть по конкретному случаю.
Но про В ТРИ РАЗА надо помнить всегда.