Logo ms.boatexistence.com

Adakah perbezaan akan menjejaskan prestasi?

Isi kandungan:

Adakah perbezaan akan menjejaskan prestasi?
Adakah perbezaan akan menjejaskan prestasi?

Video: Adakah perbezaan akan menjejaskan prestasi?

Video: Adakah perbezaan akan menjejaskan prestasi?
Video: 4 Benda yang Buat Otak Anda Jadi Dungu 2024, Mungkin
Anonim

Ya, kerana menggunakan DISTINCT akan (kadangkala mengikut ulasan) menyebabkan hasil dipesan Mengisih ratusan rekod memerlukan masa. Cuba GROUP BY semua lajur anda, ia kadangkala boleh membawa pengoptimum pertanyaan untuk memilih algoritma yang lebih cekap (sekurang-kurangnya dengan Oracle saya dapati peningkatan prestasi yang ketara).

Adakah buruk untuk menggunakan berbeza?

Nah, penggunaan "distinct" yang tidak betul bukan sahaja menyembunyikan masalah sebenar (entri pendua dalam jadual, kekurangan syarat dalam klausa on) seperti yang dibincangkan di atas tetapi juga merendahkan prestasi pertanyaan… Ini akan menyebabkan Kos IO (bacaan logik) pertanyaan meningkat dengan ketara.

Adakah perbezaan menjadikan pertanyaan lebih perlahan?

Sangat sedikit pertanyaan mungkin berprestasi lebih pantas dalam mod SELECT DISTINCT dan sangat sedikit yang akan berprestasi lebih perlahan (tetapi tidak jauh lebih perlahan) dalam mod SELECT DISTINCT tetapi untuk kes yang kemudian ia berkemungkinan bahawa aplikasi mungkin perlu memeriksa kes pendua, yang mengalihkan beban prestasi dan kerumitan kepada aplikasi.

Adakah lebih baik menggunakan berbeza atau GROUP BY?

Dalam MySQL, DISTINCT nampaknya sedikit lebih cepat daripada GROUP BY jika Medan tidak diindeks. DISTINCT hanya menghapuskan baris pendua tetapi GROUP BY nampaknya menyusunnya sebagai tambahan.

Mengapa kita tidak sepatutnya menggunakan berbeza dalam SQL?

Jika ada pilihan yang berbeza untuk 'menyelesaikan' masalah, maka anda berkemungkinan mendapat prestasi buruk sebagai balasan. GROUP BY membolehkan anda menggunakan fungsi agregat, seperti AVG, MAX, MIN, SUM dan COUNT. DISTINCT hanya alih keluar pendua.

Disyorkan: