Rumah >pangkalan data >tutorial mysql >Mana yang Lebih Baik: Klausa JOIN Berbilang atau Syarat ATAU dalam Klausa HIDUP untuk Carian Jadual Pendua?

Mana yang Lebih Baik: Klausa JOIN Berbilang atau Syarat ATAU dalam Klausa HIDUP untuk Carian Jadual Pendua?

Patricia Arquette
Patricia Arquetteasal
2025-01-07 07:24:41607semak imbas

Which is Better: Multiple JOIN Clauses or an OR Condition in the ON Clause for Duplicate Table Lookups?

Mengoptimumkan Cantuman Jadual untuk Carian Pendua

Apabila menyertai jadual yang sama dua kali, biasanya terdapat dua pendekatan: menggunakan berbilang klausa JOIN atau menggabungkan ATAU syarat dalam klausa ON.

Berbilang JOIN Klausa (Kaedah 1):

Seperti yang ditunjukkan dalam contoh anda, kaedah ini melibatkan mewujudkan JOIN yang berasingan untuk setiap keadaan yang sepadan:

SELECT t1.PhoneNumber1, t1.PhoneNumber2, 
   t2.SomeOtherFieldForPhone1, t3.someOtherFieldForPhone2
FROM Table1 t1
INNER JOIN Table2 t2
   ON t2.PhoneNumber = t1.PhoneNumber1
INNER JOIN Table2 t3
   ON t3.PhoneNumber = t1.PhoneNumber2

Pendekatan ini adalah mudah dan memastikan bahawa data yang terhasil mengandungi semua lajur yang diperlukan.

ATAU Keadaan dalam Klausa ON (Kaedah 2):

Kaedah ini cuba memudahkan pertanyaan dengan menggabungkan syarat JOIN menjadi satu:

SELECT ...
FROM Table1
INNER JOIN Table2 
   ON Table1.PhoneNumber1 = Table2.PhoneNumber OR
      Table1.PhoneNumber2 = Table2.PhoneNumber

Walau bagaimanapun, pendekatan ini boleh membawa kepada pendua baris dalam set hasil jika kedua-dua syarat padanan dipenuhi untuk baris tertentu.

Terbaik Amalan:

Kaedah pilihan ialah Kaedah 1 dengan berbilang klausa JOIN. Ia menyediakan cara yang lebih jelas dan boleh dipercayai untuk menyertai jadual berdasarkan kriteria tertentu sambil mengelakkan pertindihan data.

Mengelakkan Gabungan Berlebihan:

Adalah penting untuk mengelakkan gabungan berlebihan dengan menggunakan alias yang sesuai dan konvensyen penamaan. Contohnya, pertanyaan berikut boleh dipermudahkan:

SELECT t.PhoneNumber1, t.PhoneNumber2, 
   t1.SomeOtherFieldForPhone1, t1.someOtherFieldForPhone1
FROM Table1 t
JOIN Table2 t1 ON t1.PhoneNumber = t.PhoneNumber1
JOIN Table2 t2 ON t2.PhoneNumber = t.PhoneNumber2

Dengan mengaliaskan jadual yang dicantumkan (cth., t1 dan t2), anda boleh mengurangkan lebihan dan menjadikan pertanyaan lebih mudah dibaca.

Atas ialah kandungan terperinci Mana yang Lebih Baik: Klausa JOIN Berbilang atau Syarat ATAU dalam Klausa HIDUP untuk Carian Jadual Pendua?. 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