1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
| --------------
SET AUTOCOMMIT = 0
--------------
--------------
START TRANSACTION
--------------
--------------
DROP DATABASE IF EXISTS `base`
--------------
--------------
CREATE DATABASE `base`
DEFAULT CHARACTER SET `latin1`
DEFAULT COLLATE `latin1_general_ci`
--------------
--------------
DROP TABLE IF EXISTS `test`
--------------
--------------
create table `test` (
`id` integer unsigned auto_increment NOT NULL PRIMARY KEY,
`cat1` char(10) NOT NULL,
`cat2` char(10) NOT NULL,
`cat3` char(10) NOT NULL,
`cat4` char(10) NOT NULL,
index `idx_cat1` (`cat1`),
index `idx_cat2` (`cat2`),
index `idx_cat3` (`cat3`),
index `idx_cat4` (`cat4`)
) ENGINE=InnoDB
DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
ROW_FORMAT=COMPRESSED
--------------
--------------
insert into `test` (`cat1`,`cat2`,`cat3`,`cat4`) values
('rouge', 'vert', 'jaune', 'bleu'),
('bleu', 'marron', 'noir', 'gris'),
('marron', 'gris', 'bleu', 'rose'),
('rose', 'noir', 'gris', 'vert'),
('noir', 'orange', 'vert', 'marron'),
('bleu', 'rose', 'marron', 'jaune'),
('vert', 'rouge', 'marron', 'orange'),
('orange', 'jaune', 'rose', 'rouge'),
('gris', 'bleu', 'rouge', 'noir'),
('jaune', 'vert', 'orange', 'gris')
--------------
--------------
select * from test
--------------
+----+--------+--------+--------+--------+
| id | cat1 | cat2 | cat3 | cat4 |
+----+--------+--------+--------+--------+
| 1 | rouge | vert | jaune | bleu |
| 2 | bleu | marron | noir | gris |
| 3 | marron | gris | bleu | rose |
| 4 | rose | noir | gris | vert |
| 5 | noir | orange | vert | marron |
| 6 | bleu | rose | marron | jaune |
| 7 | vert | rouge | marron | orange |
| 8 | orange | jaune | rose | rouge |
| 9 | gris | bleu | rouge | noir |
| 10 | jaune | vert | orange | gris |
+----+--------+--------+--------+--------+
--------------
explain
select * from test where cat1 like 'rose'
union select * from test where cat2 like 'rose'
union select * from test where cat3 like 'rose'
union select * from test where cat4 like 'rose'
--------------
+------+--------------+----------------+------------+-------+---------------+----------+---------+------+------+----------+-----------------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+------+--------------+----------------+------------+-------+---------------+----------+---------+------+------+----------+-----------------------+
| 1 | PRIMARY | test | NULL | range | idx_cat1 | idx_cat1 | 10 | NULL | 1 | 100.00 | Using index condition |
| 2 | UNION | test | NULL | range | idx_cat2 | idx_cat2 | 10 | NULL | 1 | 100.00 | Using index condition |
| 3 | UNION | test | NULL | range | idx_cat3 | idx_cat3 | 10 | NULL | 1 | 100.00 | Using index condition |
| 4 | UNION | test | NULL | range | idx_cat4 | idx_cat4 | 10 | NULL | 1 | 100.00 | Using index condition |
| NULL | UNION RESULT | <union1,2,3,4> | NULL | ALL | NULL | NULL | NULL | NULL | NULL | NULL | Using temporary |
+------+--------------+----------------+------------+-------+---------------+----------+---------+------+------+----------+-----------------------+
--------------
select * from test where cat1 like 'rose'
union select * from test where cat2 like 'rose'
union select * from test where cat3 like 'rose'
union select * from test where cat4 like 'rose'
--------------
+----+--------+-------+--------+-------+
| id | cat1 | cat2 | cat3 | cat4 |
+----+--------+-------+--------+-------+
| 4 | rose | noir | gris | vert |
| 6 | bleu | rose | marron | jaune |
| 8 | orange | jaune | rose | rouge |
| 3 | marron | gris | bleu | rose |
+----+--------+-------+--------+-------+
--------------
COMMIT
--------------
--------------
SET AUTOCOMMIT = 1
--------------
Appuyez sur une touche pour continuer... |
Partager