Je veux alternative/efficace/optimisé requête pour requête suivante:mysql - Alternative/efficace/optimisé requête
Tableau:
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 ;
Indice Composite:
CREATE INDEX id1_id2 ON tablename (id1, id2);
Nombre de lignes = 7891
Mettre à jour la requête:
UPDATE table_name
SET f3=1
WHERE id1=1 AND id2='a'
OR id1=2 AND id2='b'
OR id1=3 AND id2='c'
Fondamentalement, je dois mettre à jour la valeur d'un champ en fonction de 2 champs (id1, id2) valeurs. Ces 2 champs peuvent être dans plus d'une paire.
sortie de 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
Merci beaucoup pour l'aide
Cordialement
Avez-vous un index pour ID1, ID2? – InSane
@InSane - bonne question, +1. Juste pour développer cela, l'index idéal inclut id1 et id2 dans un index. Je voulais juste dire que c'est une question débutant. –
Vous êtes conscient que la requête fournie ne va pas associer les valeurs id1 et id2 comme vous l'avez déclaré, n'est-ce pas? Vous devez utiliser des parenthèses pour qu'il soit évalué correctement. –