84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
Reihenfolge nach city_id (Primärschlüsselindex)
Reihenfolge nach Länder-ID (keine Indizierung!!!)
认证0级讲师
你的city_id是主键,而country_id是复合主键。
改成
SELECT * FROM city FORCE INDEX(idx_fk_country_id) ORDER BY country_id;
是这样的,你在SELECT中查询了索引建以外的列,那么ORDER BY就不会使用索引了。你可以用FORCE INDEX来强制使用索引。
SELECT
ORDER BY
FORCE INDEX
还有一点,就是所谓的覆盖索引。覆盖索引的定义是:MySQL可以根据索引返回select字段而不用根据索引再次查询文件而得出结果。
select
当你使用select *时,你没有强制指定索引,那么mysql为了得到你的查询的字段而查询文件,然后再进行排序操作,这就没有用到覆盖索引。而你使用了force index就会强制使用覆盖索引,这样就不会出现filesort的情况了。
select *
mysql
force index
filesort
你的city_id是主键,而country_id是复合主键。
改成
是这样的,你在
SELECT
中查询了索引建以外的列,那么ORDER BY
就不会使用索引了。你可以用FORCE INDEX
来强制使用索引。还有一点,就是所谓的覆盖索引。覆盖索引的定义是:MySQL可以根据索引返回
select
字段而不用根据索引再次查询文件而得出结果。当你使用
select *
时,你没有强制指定索引,那么mysql
为了得到你的查询的字段而查询文件,然后再进行排序操作,这就没有用到覆盖索引。而你使用了force index
就会强制使用覆盖索引,这样就不会出现filesort
的情况了。