(Saya berasumsi Anda bermaksud mengetik ids.customer_id = customer.customer_id
dan bukan customer_ids.customer_id)
Tanpa ORDER BY mysql mengambil 10 id pertama dari tipe 10 (diindeks), mencari pelanggan untuk mereka, dan selesai. (Perhatikan bahwa LEFT JOIN di sini benar-benar INNER JOIN karena kondisi join hanya berlaku untuk baris yang memiliki kecocokan di kedua tabel)
Dengan ORDER BY mysql mungkin mengambil semua type=10 pelanggan lalu urutkan berdasarkan nama depan untuk menemukan 10 pelanggan pertama.
Anda dapat mempercepatnya dengan mendenormalisasi tabel pelanggan (menyalin jenisnya ke dalam catatan pelanggan) atau membuat tabel pemetaan untuk menampung customer_id, name, type
tupel. Dalam kedua kasus, tambahkan indeks pada (type, name)
. Jika menggunakan tabel pemetaan, gunakan untuk melakukan penggabungan 3 arah dengan pelanggan dan id.
Jika type=10 cukup umum, Anda juga bisa memaksa kueri untuk menelusuri tabel pelanggan berdasarkan nama dan memeriksa jenis masing-masing dengan STRAIGHT JOIN. Ini tidak akan secepat indeks gabungan, tetapi akan lebih cepat daripada menarik semua kecocokan.
Dan seperti yang disarankan di atas, jalankan EXPLAIN pada kueri Anda untuk melihat paket kueri yang digunakan mysql.