[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Views ?
andrey888
Как известно индексирование таблиц в бд приводит к заметному сокращению времени при запросах вида 'SELECT...'
Вопрос следующий: Если на основе проиндексированной таблицы создается VIEW и "SELECT" делается именно по "VIEW".
Будет ли команда "SELECT" по "VIEW" выполнятся так же быстрее при проиндексированной таблице ????

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Placido
Это зависит от алгоритма, который используется при обращении к представлению. Если это MERGE, то будет, если TEMPTABLE - нет.
Если в определении представления используются агрегатные функции, DISTINCT, GROUP BY, HAVING, LIMIT, UNION или UNION ALL, подзапросы в части SELECT, то будет использоваться алгоритм TEMPTABLE, и индексы при выборке из представления использоваться не будут (а будут использоваться только при создании временной таблицы).
Пруф:
http://dev.mysql.com/doc/refman/5.0/en/vie...strictions.html
http://dev.mysql.com/doc/refman/5.0/en/view-algorithms.html
http://habrahabr.ru/post/47031/
andrey888
Тогда следующий вопрос.
Получается имея базу в несколько сотен тысяч пользователей - использование "VIEW - TEMPTABLE" будет смерти подобно -- так как шевелится такая штука будет очень медленно .

VIEW - TEMPTABLE - очень удобен с точки зрения безопасности (ничего нельзя изменять , удалять ) .
А если будем использовать VIEW - MERGE , то сохранение безопасности переходит исключительно на код ( чтоб нельзя было занести всякую бяку, удалить что то или изменить ) ..
Так как же быть ?
Как на уровне SQL можно добится примерно того что делает VIEW - TEMPTABLE , при этом чтоб индексы были задействованы и запросы не длились вечность ..?

Буду рад опытным мнениям...

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Visman
Цитата (andrey888 @ 26.03.2012 - 16:47)
то сохранение безопасности переходит исключительно на код ( чтоб нельзя было занести всякую бяку, удалить что то или изменить ) ..

Так и должно быть.
И дополню, юзер/модератор/админ не имеющий прав на какие-то действия, не должен даже видеть возможность таких действий в интерфейсе сайта.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.