Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mencari Baris Tunggal dengan Cekap dengan Mengurangkan Ketepatan Carian dalam SQL?

Bagaimanakah Saya Boleh Mencari Baris Tunggal dengan Cekap dengan Mengurangkan Ketepatan Carian dalam SQL?

Linda Hamilton
Linda Hamiltonasal
2024-12-29 14:39:10992semak imbas

How Can I Efficiently Find a Single Row with Decrementing Search Precision in SQL?

Mencari Baris Tunggal dengan Ketepatan Penurunan Menggunakan Penyata PILIH Berbilang

Dalam operasi pangkalan data, mungkin perlu mencari satu baris menggunakan berbilang tahap ketepatan Ini melibatkan penurunan kriteria carian secara berperingkat sehingga keputusan ditemui Contohnya, pertimbangkan untuk mencari imej dalam a jadual:

Masalah:

Cari baris dalam jadual yang memenuhi syarat berikut:

  • nama SUKA 'teks'
  • id_kumpulan = 10

Jika tiada hasil untuk pertanyaan ini, cuba pertanyaan berikut:

  • nama LIKE 'teks'

Jika ada masih tiada hasil untuk pertanyaan ini , kemudian cuba pertanyaan berikut:

  • group_id = 10

Penyelesaian:

Menggunakan pernyataan UNION ALL, semua pertanyaan ini boleh dilaksanakan sekali gus, dengan itu mencapai carian dengan ketepatan yang semakin berkurangan. Pernyataan ini menggabungkan hasil pertanyaan yang berbeza dalam susunan yang ditentukan, seperti berikut:

SELECT * FROM image WHERE name = 'text' AND group_id = 10
UNION ALL
SELECT * FROM image WHERE name = 'text'
UNION ALL
SELECT * FROM image WHERE group_id = 10
LIMIT 1;

Pengoptimuman:

Untuk meningkatkan prestasi, pastikan untuk mencipta yang sesuai Indeks ini sangat penting. Untuk contoh ini, adalah disyorkan untuk membuat indeks pada lajur berikut:

  • image_name_grp_idx (name, group_id)
  • image_grp_idx (group_id)

dengan menambah LIMIT 1 klausa, Postgres Prestasi boleh dioptimumkan dengan menghentikan pertanyaan lanjut selepas baris pertama yang memenuhi kriteria ditemui.

Pengertian:

Kaedah ini boleh digeneralisasikan dengan sebarang bilangan parameter carian. Cuma tambah lebih banyak pernyataan SELECT di dalam pernyataan UNION ALL.

Isih:

Walaupun klausa LIMIT 1 hanya mengembalikan satu baris, kaedah ini mungkin tidak praktikal jika anda ingin mengisih hasil berdasarkan perkaitan. Dalam kes ini, pertanyaan yang lebih kompleks diperlukan untuk mencapai pengisihan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari Baris Tunggal dengan Cekap dengan Mengurangkan Ketepatan Carian dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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