1. 程式人生 > >MySQL各種小技巧(不定時更新)

MySQL各種小技巧(不定時更新)

索引:(customCate,creator)
1:
explain select * from tb where customCate in ('4028487718bc5d980118bd277fc40000','402848771a0449fc011a044afca60001','402848771a0449fc011a05672a260655','402848771a05fb0e011a0a50401b058f') and creator ='4028487718bc5d980118bd277fc40069';
+----+-------------+-------------+-------+------------------------------------------+------------------------+---------+------+-------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------------+-------+------------------------------------------+------------------------+---------+------+-------+-------------+
| 1 | SIMPLE | tb | range | idx_customCate_creator,idx_creator_releD | idx_customCate_creator | 198 | NULL | 16371 | Using where | +----+-------------+-------------+-------+------------------------------------------+------------------------+---------+------+-------+-------------+
執行計劃裡的Type為range,但是in屬於多個等值條件,可以繼續用第2個索引,和>,<情況不一樣。 2: explain select * from tb where customCate in ('402848771a05fb0e011a0a50401b058f','402848771a05fb0e011a0a506eab0590','402848771a05fb0e011a0a50c90f0592') order by creator; +----+-------------+-------------+-------+------------------------+------------------------+---------+------+-------+-----------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------------+-------+------------------------+------------------------+---------+------+-------+-----------------------------+ | 1 | SIMPLE | tb | range | idx_customCate_creator | idx_customCate_creator | 99 | NULL | 19869 | Using where; Using filesort | +----+-------------+-------------+-------+------------------------+------------------------+---------+------+-------+-----------------------------+ 對於Order ByGroup By 第2個索引不能用,和>,< 情況一樣。 3: explain select * from tb where customCate in ('402848771a05fb0e011a0a50401b058f','402848771a05fb0e011a0a506eab0590','402848771a05fb0e011a0a50c90f0592') and creator in ('4028487718bc5d980118bd277fc40069','4028487718dbd37a0118e54b53e300e8','4028487718dbd37a0118e54b53e300e8'); +----+-------------+-------------+-------+------------------------------------------+------------------------+---------+------+-------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------------+-------+------------------------------------------+------------------------+---------+------+-------+-------------+ | 1 | SIMPLE | tb | range | idx_customCate_creator,idx_creator_releD | idx_customCate_creator | 198 | NULL | 19881 | Using where | +----+-------------+-------------+-------+------------------------------------------+------------------------+---------+------+-------+-------------+ 1 row in set (0.00 sec) 可以在多個欄位一起用多個等值條件查詢,多個欄位的索引都可以被利用,和>,<情況不一樣。 4:IN 用法不適用於 NOT IN explain select * from tb where customCate not in ('4028487718bc5d980118bd277fc40000','402848771a05fb0e011a0a506eab0590','402848771a05fb0e011a0a50c90f0592') and creator ='4028487718bc5d980118bd277fc40069'; +----+-------------+-------------+------+------------------------------------------+-------------------+---------+-------+-------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------------+------+------------------------------------------+-------------------+---------+-------+-------+-------------+ | 1 | SIMPLE | tb | ref | idx_customCate_creator,idx_creator_releD | idx_creator_releD | 99 | const | 42008 | Using where | +----+-------------+-------------+------+------------------------------------------+-------------------+---------+-------+-------+-------------+