скорость выполнения VIEW

GHopper

Новичок
скорость выполнения VIEW

Здравствуйте!
MySQL 5 (последнее обновление)
Есть view:
PHP:
create view view_speed_test AS
SELECT news.id as id, header,subheader, leed, src_name, dt,city.name
FROM test.news
LEFT OUTER JOIN city ON
  news.city_id=city.id
;
Делаю простой эксперемент:
PHP:
select * from view_speed_test
where header like '9%';
и
PHP:
SELECT news.id as id, header,subheader, leed, src_name, dt,city.name
FROM test.news
LEFT OUTER JOIN city ON
  news.city_id=city.id
where header like '9%'
;
EXPLAIN выдает одинаковую картину для обоих запросов, но вот скорость выполнения первого ВСЕГДА больше (0.1783 vs 0.1755s)!
Вопрос - нафиг оно надо? Если раньше view использовался для обеспечения безопасности и ограничения доступа к столбцам, то теперь эта проблема решается на уровне БД. Насполько я помню в MSSQL view выполнялись быстрее аналогичного запроса, т.к. результирующая таблица кешировалась в памятии... но в MySql такого, судя по всему, нету.
Таким образом единственные плюс от использования view - уменьшение размеров sql-запросов в php-коде! Но ведь это можно решить и средствами php (создать например специальный класс). И скорость теряться не будет...
 

kruglov

Новичок
Но ведь это можно решить и средствами php (создать например специальный класс). И скорость теряться не будет
Ага, этот класс будет исполняться не сервером, а мировым разумом?

-~{}~ 27.10.07 11:01:

p.s. И мне кажется, или так и есть, что количество выбираемых столбцов в первом запросе несколько больше, чем во втором?
 

GHopper

Новичок
Автор оригинала: kruglov
Ага, этот класс будет исполняться не сервером, а мировым разумом?

-~{}~ 27.10.07 11:01:

p.s. И мне кажется, или так и есть, что количество выбираемых столбцов в первом запросе несколько больше, чем во втором?
Зачем ему мировой разум, когда есть сервер!!!
Я говорил о том, что использовать view для уменьшения sql-запроса неразумно, т.к. его можно заменить простецким php-классом! К тому-же это не пвлияет на скрость выполнения sql-запроса!

Количество выбираемых столбцов абсолютно одинаково! EXPLAIN обоих запросов абсолютно одинаковы! Разница только в скорости. И это говорит о том, что view в mysql5 использовать не следует!
 

Rin

*
Я тоже думал над этим.
Но ради элегантности и абстракции кода не стал экономить на копейках в 0.01 сек.
 

GHopper

Новичок
Автор оригинала: Rin
Я тоже думал над этим.
Но ради элегантности и абстракции кода не стал экономить на копейках в 0.01 сек.
капейки в 0.01 сек. это на малых нагрузках сервера. А я планирую использовать view гораздо сложнее тех, что использовал для теста; что мое творение будет существовать долго и счастливо и через несколько лет БД разрастется до таких размеров, что копейки превратятся в рубли! Хотя, во многих случаях, этим можно и пренебречь...
 

Rin

*
>копейки превратятся в рубли

откуда такая уверенность? :)
 

camka

не самка
Почитайте, как работают VIEW-ы в докумантации, чтобы иметь представление, почему тот или иной их тип лучше в той или иной ситуации. Просмотрите EXPLAIN EXTENDED для запроса, использующего VIEW - очень много интересного можно для себя открыть.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: GHopper
но вот скорость выполнения первого ВСЕГДА больше (0.1783 vs 0.1755s)!
Таки за что я люблю пользователей MySQL, это вот за такую одномерность мышления. Сравнение времени выполнения запросов межушный нервный узел ещё осиливает, а вот сравнивать вещи не выражающиеся аккуратненькими цыферками уже сложно.
 
Сверху