Kunci Asing dan Prestasi Pertanyaan
Walaupun kunci asing memainkan peranan penting dalam menguatkuasakan integriti rujukan, kesannya terhadap prestasi pertanyaan sering disalahertikan. Bertentangan dengan kepercayaan umum, kunci asing itu sendiri tidak meningkatkan prestasi pertanyaan dengan ketara.
Dalam senario yang disediakan, pertanyaan menggabungkan dua jadual, Produk dan Kategori Produk, menggunakan medan CategoryId sebagai syarat penyertaan. Walaupun terdapat hubungan kunci asing, pelan pertanyaan menunjukkan imbasan indeks kelompok pada Produk jadual. Ini kerana SQL Server tidak mencipta indeks secara automatik berdasarkan kunci asing.
Untuk meningkatkan prestasi pertanyaan ini, indeks harus dibuat secara eksplisit pada medan Products.CategoryId. Selepas mencipta indeks, pelan pelaksanaan menunjukkan carian indeks pada kedua-dua jadual, dengan ketara mengurangkan anggaran kos subpokok.
Oleh itu, jawapan kepada soalan yang dikemukakan adalah seperti berikut:
Adakah kunci asing menambah baik pertanyaan prestasi?
Perlukah saya mencipta indeks pada semua lajur FK dalam semua jadual?
Atas ialah kandungan terperinci Adakah Kunci Asing Mempercepatkan Pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!