Perubahan Pengoptimuman Pertanyaan MySQL/MariaDB: Susun Mengikut dalam Subkueri
Apabila membuat pertanyaan dengan MySQL 5.5 atau lebih awal, klausa ORDER BY subquery telah digunakan sebelum SELECT pertanyaan terluar. Walau bagaimanapun, dalam MariaDB 10.0.14, tingkah laku ini telah berubah dan subkueri klausa ORDER BY kini diabaikan apabila tiada LIMIT hadir.
Untuk menangani perkara ini, MariaDB mengesyorkan menggunakan klausa ORDER BY pada pertanyaan paling luar atau menggunakan LIMIT dalam subkueri.
Didokumenkan Gelagat
Dokumentasi MariaDB menyatakan bahawa subkueri dalam klausa FROM ialah set baris yang tidak tertib dan klausa ORDER BY biasanya diabaikan dalam konteks ini. Petikan berikut daripada dokumentasi memberikan lebih terperinci:
""jadual" (dan subkueri dalam klausa FROM juga) ialah - mengikut standard SQL - set baris yang tidak tertib. Baris dalam jadual (atau dalam subquery dalam klausa FROM) tidak datang dalam mana-mana susunan tertentu Itulah sebabnya pengoptimum boleh mengabaikan klausa ORDER BY yang telah anda nyatakan malah tidak membenarkan klausa ORDER BY muncul dalam subquery ini (kami membenarkannya, kerana ORDER BY ... LIMIT ... mengubah keputusan, set baris, bukan sahaja pesanan mereka)."
Oleh itu , adalah dicadangkan untuk menganggap subkueri sebagai set tidak tertib dan meletakkan klausa ORDER BY dalam pertanyaan paling luar atau gunakan LIMIT seperti yang diperlukan.
Atas ialah kandungan terperinci Bagaimanakah Pengendalian ORDER BY oleh MariaDB dalam Subkueri Berubah, dan Apakah Penyelesaian yang Disyorkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!