Dalam mysql, filesort merujuk kepada pengisihan fail, yang mengisih data yang diperolehi dalam ingatan melalui algoritma pengisihan yang sepadan. Terdapat dua jenis isihan fail: 1. Isih dwi-hala, yang mula-mula mengeluarkan medan pengisihan yang sepadan dan maklumat penuding baris yang boleh mengesan data baris secara terus mengikut keadaan yang sepadan, dan kemudian mengisihnya dalam penimbal isihan 2 . Pengisihan satu hala, iaitu pengisihan sekali Keluarkan semua medan baris yang memenuhi syarat, dan kemudian isikannya dalam penimbal isihan.
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
Terdapat dua kaedah pelaksanaan pengisihan untuk ORDER BY dalam MySQL:
1. Gunakan indeks tersusun untuk mendapatkan data tersusun
2. Pengisihan fail (isihan fail)
Apabila menganalisis pertanyaan dalam explain, gunakan indeks yang dipesan untuk mendapatkan data yang dipesan dan paparan Menggunakan indeks, dan paparan pengisihan fail Menggunakan fileso rt.
Hanya apabila semua lajur dalam ORDER BY mesti disertakan dalam indeks yang sama, dan susunan indeks adalah betul-betul sama dengan susunan dalam susunan mengikut klausa dan arah pengisihan daripada semua lajur (tertib menaik atau tertib menurun) adalah sama, (mencampurkan mod ASC dan mod DESC tidak menggunakan indeks)
Gabungan di mana pernyataan dan susunan mengikut penyataan memenuhi paling kiri awalan
Dalam kes lain, gunakan pengisihan fail seperti berikut:
1) di mana pernyataan dan susunan demi pernyataan , menggunakan indeks yang berbeza
2) Menyemak terlalu banyak baris dan tidak menggunakan indeks penutup
3 ) ORDER BY Columns tidak termasuk dalam indeks yang sama, iaitu indeks yang berbeza digunakan 5) Lajur indeks dalam pernyataan where atau ORDER BY menggunakan ungkapan, termasuk ungkapan fungsi
. ∼ 6) Gabungan pernyataan where dan pernyataan ORDER BY memenuhi awalan paling kiri, tetapi dalam pernyataan where Perkara yang dicari ialah julat.
failsort
failsort ini tidak bermakna mengisih melalui fail cakera, tetapi hanya memberitahu kami bahawa operasi isihan telah dilakukan. Iaitu, dalam pelan pelaksanaan yang diberikan oleh MySQL Query Optimizer (dilihat melalui arahan EXPLAIN), ia dipanggil pengisihan fail (failsort)
: Pertama, medan isihan yang sepadan dikeluarkan mengikut keadaan yang sepadan dan data baris boleh didapati terus maklumat penunjuk baris kemudian diisih dalam penimbal isihan. Selepas mengisih, medan pertanyaan dikeluarkan mengikut penuding baris, dan cakera IO dilaksanakan dua kali.
: Ia mengeluarkan semua medan baris yang memenuhi syarat pada satu masa, dan kemudian mengisihnya dalam penimbal isihan. Jalankan cakera io sekali.
Jika susunan mengikut klausa hanya merujuk jadual pertama dalam gabungan, MySQL akan mengisih jadual pertama dahulu dan kemudian bergabung. Iaitu, Menggunakan Filesort of Extra in expain Jika tidak, MySQL mula-mula menyimpan hasil ke jadual sementara (Temporary Table), dan kemudian mengisih data dalam jadual sementara Pada masa ini, Extra in expain memaparkan Menggunakan sementara Menggunakan Filesort . [Cadangan berkaitan: tutorial video mysql]
Atas ialah kandungan terperinci Apakah filesort dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!