Adakah JOIN Benar-benar Lebih Cepat Daripada DI MANA?
Dalam senario ini, di mana dua jadual (Document and DocumentStats) dipautkan dan anda perlu mendapatkan semula dokumen dengan lebih 500 paparan, terdapat dua pilihan pertanyaan: DI MANA atau JOIN. Walaupun kedua-dua pertanyaan mungkin kelihatan serupa, kecekapannya boleh berbeza-beza bergantung pada enjin pangkalan data yang digunakan.
Menggunakan klausa WHERE, pertanyaan menjadi lebih eksplisit, menyatakan syarat untuk membandingkan medan Id kedua-dua jadual dan menapis keluar yang mempunyai paparan lebih daripada 500. Sebaliknya, klausa JOIN mencipta jadual sementara yang menggabungkan baris daripada DocumentStats dan DocumentStats berdasarkan persamaan mereka. Medan Id.
Secara teorinya, kedua-dua pertanyaan harus menghasilkan pelan pelaksanaan yang sama tanpa perbezaan prestasi yang ketara. Pengoptimum pertanyaan harus dapat mengenali struktur yang setara dan menjana laluan yang dioptimumkan. Walau bagaimanapun, dalam amalan, sesetengah enjin pangkalan data mungkin mempunyai pengoptimuman khusus untuk satu bentuk berbanding yang lain. Untuk pertanyaan rumit, perbezaan ini boleh menjadi lebih ketara.
Dalam SQL Server, menguji kedua-dua pertanyaan disyorkan untuk menentukan yang mana satu berprestasi lebih baik dengan jadual dan pengedaran data khusus anda. Walaupun klausa WHERE mungkin menjadi pilihan pilihan untuk kesederhanaan, klausa JOIN kadangkala boleh membawa kepada prestasi yang lebih baik bergantung pada enjin pangkalan data asas dan kerumitan pertanyaan.
Atas ialah kandungan terperinci JOIN lwn WHERE: Manakah yang Lebih Cepat untuk Pertanyaan Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!