Rumah > Soal Jawab > teks badan
pesanan mengikut city_id (indeks kunci utama)
pesanan mengikut country_id (tiada pengindeksan!!!)
漂亮男人2017-05-18 10:46:38
City_id anda ialah kunci utama dan country_id ialah kunci utama komposit.
怪我咯2017-05-18 10:46:38
ditukar kepada
SELECT * FROM city FORCE INDEX(idx_fk_country_id) ORDER BY country_id;
Itu sahaja, jika anda menanyakan lajur selain daripada indeks dalam SELECT
, maka ORDER BY
tidak akan menggunakan indeks. Anda boleh menggunakan FORCE INDEX
untuk memaksa penggunaan indeks. SELECT
中查询了索引建以外的列,那么ORDER BY
就不会使用索引了。你可以用FORCE INDEX
来强制使用索引。
还有一点,就是所谓的覆盖索引。覆盖索引的定义是:MySQL可以根据索引返回select
字段而不用根据索引再次查询文件而得出结果。
当你使用select *
时,你没有强制指定索引,那么mysql
为了得到你的查询的字段而查询文件,然后再进行排序操作,这就没有用到覆盖索引。而你使用了force index
就会强制使用覆盖索引,这样就不会出现filesort
select
berdasarkan indeks tanpa menanyakan semula fail berdasarkan indeks untuk mendapatkan hasilnya. #🎜🎜#
#🎜🎜#Apabila anda menggunakan select *
, anda tidak memaksa indeks untuk ditentukan, kemudian mysql
menanyakan fail untuk mendapatkan medan pertanyaan anda, dan kemudian melaksanakan operasi pengisihan ini tidak menggunakan indeks penutup. Dan jika anda menggunakan force index
, ia akan memaksa penggunaan covering index, supaya filesort
tidak akan berlaku. #🎜🎜#