- 论坛徽章:
- 0
|
When MySQL uses indexes
- Using >, >=, =,
- SELECT * FROM table_name WHERE key_part1=1 and key_part2 > 5;
- SELECT * FROM table_name WHERE key_part1 IS NULL;
- When you use a LIKE that doesn't start with a wildcard.
- SELECT * FROM table_name WHERE key_part1 LIKE 'jani%'
- Retrieving rows from other tables when performing joins.
- SELECT * from t1,t2 where t1.col=t2.key_part
- Find the MAX() or MIN() value for a specific index.
- SELECT MIN(key_part2),MAX(key_part2) FROM table_name where key_part1=10
- ORDER BY or GROUP BY on a prefix of a key.
- SELECT * FROM foo ORDER BY key_part1,key_part2,key_part3
- When all columns used in the query are part of one key.
- SELECT key_part3 FROM table_name WHERE key_part1=1
When MySQL doesn't use an index
- Indexes are NOT used if MySQL can calculate that it will probably be faster to scan the whole table. For example if key_part1 is evenly distributed between 1 and 100, it's not good to use an index in the following query:
- SELECT * FROM table_name where key_part1 > 1 and key_part1
- If you are using HEAP tables and you don't search on all key parts with =
- When you use ORDER BY on a HEAP table
- If you are not using the first key part
- SELECT * FROM table_name WHERE key_part2=1
- If you are using LIKE that starts with a wildcard
- SELECT * FROM table_name WHERE key_part1 LIKE '%jani%'
- When you search on one index and do an ORDER BY on another
- SELECT * from table_name WHERE key_part1 = # ORDER BY key2
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/22323/showart_155197.html |
|