Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan MySQL dengan Menggabungkan Pernyataan SELECT Berdasarkan Kiraan Baris?

Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan MySQL dengan Menggabungkan Pernyataan SELECT Berdasarkan Kiraan Baris?

Patricia Arquette
Lepaskan: 2024-12-22 21:27:13
asal
868 orang telah melayarinya

How Can I Optimize MySQL Queries by Combining SELECT Statements Based on Row Counts?

Menggabungkan Pertanyaan PILIH Berdasarkan Kiraan Baris

Dalam PHP, mengoptimumkan pertanyaan pangkalan data boleh meningkatkan prestasi skrip. Satu teknik adalah menolak logik ke dalam MySQL dengan melaksanakan secara bersyarat pertanyaan SELECT kedua jika yang pertama mengembalikan sifar baris.

Pertimbangkan contoh berikut:

SELECT * FROM proxies WHERE (A='B') || SELECT * FROM proxies WHERE (A='C')
Salin selepas log masuk

Kod ini menjalankan kedua-dua pertanyaan SELECT tanpa mengira hasil pertanyaan pertama.

Pendekatan yang lebih baik ialah menggunakan ciri pelaksanaan bersyarat MySQL, seperti yang dilihat dalam kod ini:

IF (SELECT count(*) FROM proxies WHERE A='B')>0
    THEN SELECT * FROM proxies WHERE A='B'
ELSEIF (SELECT count(*) FROM proxies WHERE A='C')>0
    THEN SELECT * FROM proxies WHERE A='C'
END IF
Salin selepas log masuk

Walau bagaimanapun, kaedah ini masih melaksanakan pertanyaan kiraan dua kali.

Penyelesaian yang lebih cekap ialah menggunakan UNION ALL bersama-sama dengan EXISTS:

SELECT *
FROM proxies
WHERE A='B'
UNION ALL
SELECT *
FROM proxies
WHERE A='C' AND NOT EXISTS (
    SELECT 1
    FROM proxies
    WHERE A='B'
)
Salin selepas log masuk

Pertanyaan ini mendapatkan semula baris dengan A='B' jika ia wujud, dan jika tidak, ia mendapatkan semula baris dengan A='C.' Dengan menggunakan keadaan EXISTS, pertanyaan hanya mendapatkan semula baris untuk keadaan pertama yang ditentukan (A='B') jika ia wujud, menghasilkan satu pelaksanaan pertanyaan kiraan.

Demo SQL Fiddle: https:/ /www.sqlfiddle.com/#!9/3de314

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan MySQL dengan Menggabungkan Pernyataan SELECT Berdasarkan Kiraan Baris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan