Artikel ini menerangkan cara Mysql mengembalikan hasil berdasarkan susunan nilai ID.

藏色散人
Lepaskan: 2021-10-26 16:42:26
ke hadapan
1854 orang telah melayarinya

Saya menghadapi masalah hari ini, iaitu, terdapat pertanyaan yang perlu mengembalikan set hasil dalam susunan nilai ID yang ditentukan, sebenarnya, ia juga boleh diletakkan dalam program untuk menyusun, tetapi saya tiba-tiba mahu untuk melihat sama ada saya boleh terus menggunakan Mysql untuk terus bertanya dan kembali, jadi saya mencarinya benar-benar ada fungsi tambahan untuk dilaksanakan.

Fungsi Field()

Mysql menyediakan fungsi Field() yang boleh menyesuaikan pengisihan mengikut susunan yang kami berikan

Contoh:

Katakan terdapat jadual maklumat bandar yang dipanggil wilayah dengan id kunci utama dan nama atribut nama Sekarang anda ingin menanyakan ID 2, 3, 1 dan kembalikan

<p>select id, name from regions;#id        name<br> 1        北京 2        上海 3        深圳<br></p>
Salin selepas log masuk
dalam. pesanan ini

Gunakan medan()

<p>select id, name from regions order by field(id, 2, 3, 1);#id        name<br> 2        上海 3        深圳 1        北京<br></p>
Salin selepas log masuk

Ini akan mencapai tujuan mengisih dalam susunan tersuai

Prestasi

<p>mysql> explain select id from regions order by field(id, 2, 3, 1);+---+-------------+---------+------+---------------+-----+---------+-----+------+-----------------------------+|id | select_type | table   | type | possible_keys | key | key_len | ref | rows | Extra                       ||-- | ----------- | ------- | ---- | ------------- | --- | ------- | --- | ---- | ----------------------------|  |1  | SIMPLE      | regions | index| NULL          | id  | 4       | NULL| 3    | Using index; Using filesort |+---+-------------+---------+------+---------------+-----+---------+-----+------+-----------------------------+<br></p>
Salin selepas log masuk

Kerana apabila kami menggunakan Pesanan Mengikut Medan, kami menentukan bahawa kunci utama diisih mengikut ID kunci utama Terdapat indeks kunci utama Ia akan menggunakan ID untuk mencari rekod dengan syarat yang sama dengan 2, 3, 1 anda boleh melihat bahawa terdapat indeks Menggunakan dalam Tambahan Jika anda menukar ke medan tidak terindeks yang berbeza, ia tidak akan berada di sana. Klausa Susunan Mengikut tidak boleh menggunakan indeks ini dan hanya boleh menggunakan pengisihan Filesort, itulah sebabnya terdapat Menggunakan failsort dalam Tambahan

Proses anggarannya adalah seperti berikut:

Daripada indeks id Bermula dari nod daun, imbas semua nod daun mengikut tertib
Pergi ke indeks kunci primer (indeks berkelompok) mengikut id kunci utama yang direkodkan oleh setiap nod daun) untuk mencari data baris sebenar
Tentukan sama ada data baris memenuhi id = 2, 3. 1 syarat, jika ia dipenuhi, keluarkan dan kembalikan

yang pada asasnya perlu merentasi keseluruhan jadual Sesetengah orang mengatakan bahawa ia mencari id rekod yang dipilih dalam senarai FIELD dan mengembalikan kedudukan, menggunakan kedudukan sebagai asas pengisihan.
Penggunaan sedemikian akan membawa kepada Menggunakan filesort (sudah tentu, menggunakan Filesort tidak semestinya lebih perlahan, kadangkala ia lebih cepat daripada tidak menggunakannya), yang merupakan kaedah pengisihan yang sangat tidak cekap.

Biasanya klausa ORDER BY digabungkan dengan klausa LIMIT untuk mengambil hanya sebahagian daripada baris. Jika anda mengisih semua baris hanya untuk mengeluarkan baris 1 teratas, ini jelas sekali bukan pendekatan yang cekap.

Ringkasan

Fungsi Field() boleh membantu kami secara langsung melengkapkan beberapa pengisihan yang diperlukan pada lapisan pangkalan data dan memudahkan kod perniagaan, tetapi pada masa yang sama ia juga akan mempunyai keserasian dan prestasi Cadangan soalan boleh digunakan di tempat di mana kekerapan perubahan data adalah rendah atau terdapat cache jangka panjang Apabila jumlah data adalah besar, pangkalan data boleh digunakan untuk menanyakan data dan menyusunnya dalam program

Kajian yang disyorkan: "tutorial video mysql

Atas ialah kandungan terperinci Artikel ini menerangkan cara Mysql mengembalikan hasil berdasarkan susunan nilai ID.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:learnku.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!