The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Тормоза View"
Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (MySQL)
Изначальное сообщение [ Отслеживать ]

"Тормоза View"  +/
Сообщение от westvovik (??) on 01-Ноя-11, 19:11 
Подскажите знающие люди почему при использовании VIEW и также выполнение того же запросто только без VIEW разница очень большая в скорости, особенно при большом количестве записей
к примеру сложный запрос с объединением 15 таблиц
100 000 строк в основной таблице

через VIEW 9,2 сек
без VIEW 0,5 cек

Может быть какие то особенные параметры можно использовать?
Не совсем ясно смысл view тогда

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Тормоза View"  +/
Сообщение от DeadLoco (ok) on 05-Ноя-11, 11:25 
> Подскажите знающие люди почему при использовании VIEW и также выполнение того же
> запросто только без VIEW разница очень большая в скорости, особенно при
> большом количестве записей

Все зависит от того, что за вью, и есть ли для него подходящие индексы.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Тормоза View"  +/
Сообщение от westvovik (??) on 05-Ноя-11, 15:52 
>> Подскажите знающие люди почему при использовании VIEW и также выполнение того же
>> запросто только без VIEW разница очень большая в скорости, особенно при
>> большом количестве записей
> Все зависит от того, что за вью, и есть ли для него
> подходящие индексы.

Вот к примеру

CREATE  TABLE IF NOT EXISTS `test`.`client` (
  `id` INT(11) NOT NULL AUTO_INCREMENT ,
  `passport_id` INT(11) NOT NULL ,
  `fio` VARCHAR(255) NOT NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `passport_id` (`passport_id` ASC) ,
  CONSTRAINT `table1_ibfk_1`
    FOREIGN KEY (`passport_id` )
    REFERENCES `hvo_main`.`table2` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci

CREATE  TABLE IF NOT EXISTS `test`.`passport` (
  `id` INT(11) NOT NULL AUTO_INCREMENT ,
  `passport_num` VARCHAR(20) NOT NULL ,
  `vidan` VARCHAR(50) NOT NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `passport_num` (`passport_num` ASC, `vidan` ASC) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci

Данных сразу говорю много
Делаю запрос

Если сделать из нижнего запроса view

SELECT client.fio, passport.passport_num FROM client LEFT JOIN passport ON passport.id = client.passport_id

id     select_type     table     type     possible_keys     key     key_len     ref     rows     Extra
1     SIMPLE     client     ALL     NULL    NULL    NULL    NULL    1     Using temporary; Using filesort
1     SIMPLE     passport     eq_ref     PRIMARY     PRIMARY     4     hvo_test.client.passport_id     1    

Вот это простой пример в моем случаем объединяю 10 таблиц
Индексы все есть

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Тормоза View"  +/
Сообщение от DeadLoco (ok) on 05-Ноя-11, 16:02 
1     SIMPLE     client     ALL     NULL    NULL    NULL    NULL    1     Using temporary; Using filesort

Так все же явно, открытым текстом написано: таблица клиентов не имеет ни одного индекса и используется медленный файлсорт. Создайте индекс по паспорт_ид, и будет вам щясье.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Тормоза View"  +/
Сообщение от westvovik (??) on 05-Ноя-11, 16:07 
> 1     SIMPLE     client  
>    ALL     NULL  
>  NULL    NULL    NULL  
>   1     Using temporary; Using filesort
> Так все же явно, открытым текстом написано: таблица клиентов не имеет ни
> одного индекса и используется медленный файлсорт. Создайте индекс по паспорт_ид, и
> будет вам щясье.

Так в том то и дело что есть индексы, посмотрите

  PRIMARY KEY (`id`) ,
  INDEX `passport_id` (`passport_id` ASC) ,
  CONSTRAINT `table1_ibfk_1`
    FOREIGN KEY (`passport_id` )
    REFERENCES `hvo_main`.`table2` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру