Подскажите знающие люди почему при использовании VIEW и также выполнение того же запросто только без VIEW разница очень большая в скорости, особенно при большом количестве записей
к примеру сложный запрос с объединением 15 таблиц
100 000 строк в основной таблицечерез VIEW 9,2 сек
без VIEW 0,5 cекМожет быть какие то особенные параметры можно использовать?
Не совсем ясно смысл view тогда
> Подскажите знающие люди почему при использовании VIEW и также выполнение того же
> запросто только без VIEW разница очень большая в скорости, особенно при
> большом количестве записейВсе зависит от того, что за вью, и есть ли для него подходящие индексы.
>> Подскажите знающие люди почему при использовании 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_ciCREATE 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 SIMPLE client ALL NULL NULL NULL NULL 1 Using temporary; Using filesortТак все же явно, открытым текстом написано: таблица клиентов не имеет ни одного индекса и используется медленный файлсорт. Создайте индекс по паспорт_ид, и будет вам щясье.
> 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)