SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 05.11.2011 15:43:10

westvovik
Участник
Зарегистрирован: 05.11.2011
Сообщений: 1

Тормоза при JOIN и ORDER BY

Люди знающие расскажите что я делаю не так

Есть табличка к примеру

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

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

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

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 разных таблиц, то тормоза неимоверные, но только если есть ORDER BY
без WHERE и ORDER BY все летает

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson