Я хочу альтернативный/эффективный/оптимизированный запрос для следующих запросов:MySQL - альтернативный/эффективный/оптимизированный запрос
Таблица:
CREATE TABLE `bartco_web_vms_studio`.`table_name` (
`index` INT(10) NOT NULL AUTO_INCREMENT ,
`id1` INT(10) NOT NULL DEFAULT '0',
`id2` VARCHAR(10) NOT NULL,
`f3` TINYINT(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`index`)
) ENGINE = MYISAM ;
Композитный индекс:
CREATE INDEX id1_id2 ON tablename (id1, id2);
Количество строк = 7891
Запрос информации:
UPDATE table_name
SET f3=1
WHERE id1=1 AND id2='a'
OR id1=2 AND id2='b'
OR id1=3 AND id2='c'
В основном я должен обновить значение поля на основе двух значений (id1, id2). Эти 2 поля могут быть более чем в 1 паре.
Выход из EXPLAIN SELECT f3 FROM table_name WHERE ...
:
id -> 1,
select type -> SIMPLE,
table -> table_name,
type -> range,
possible_keys -> id1_id2,
key -> id1_id2,
key_len -> 261,
ref -> NULL,
rows -> 2,
Extra -> Using where
Большое спасибо за помощь
С уважением
У вас есть индекс для ID1, ID2? – InSane 2010-12-01 03:39:58
@ InSane - хороший вопрос, +1. Просто чтобы расширить это, идеальный индекс включает в себя как id1, так и id2 в одном индексе. Просто хотел сказать, что это вопрос новичков. – 2010-12-01 03:43:04