Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PHP membutuhkan waktu 90x lebih lama untuk menjalankan kueri daripada klien MySQL

Memberikan pembaruan yang sangat terlambat untuk pertanyaan ini:

Saya belum menemukan penyebabnya, tapi ternyata EXPLAIN di PHP berbeda dengan di CLI. Saya tidak yakin apakah ada aspek koneksi yang akan menyebabkan MySQL memilih untuk menggunakan bidang yang berbeda untuk indeks, karena sejauh yang saya tahu hal-hal itu seharusnya tidak terkait; tapi sayangnya, EXPLAIN PHP menunjukkan bahwa indeks yang tepat tidak digunakan, sedangkan CLI melakukannya.

Solusi dalam kasus (membingungkan) ini adalah dengan menggunakan petunjuk indeks . Lihat baris 'FROM' dalam kueri yang dimodifikasi ini dari contoh saya:

SELECT HEX(al.uuid) hexUUID, al.created_on,
    IFNULL(al.state, 'ON') actionType, pp.publishers_id publisher_id,
    pp.products_id product_id, al.action_id, al.last_updated
FROM ActionAPI.actionLists al USE INDEX (created_on)
LEFT JOIN ActionAPI.publishers_products pp
    ON al.publisher_product_id = pp.id
WHERE (al.test IS NULL OR al.test = 0)
    AND (al.created_on >= :since OR al.last_updated >= :since)
ORDER BY created_on ASC
LIMIT :skip, 100;

Semoga ini bisa membantu seseorang!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nama indeks tidak terdefinisi

  2. pesanan mysql dengan data serial?

  3. Cara mengimpor file XML ke tabel database MySQL menggunakan XML_LOAD(); fungsi

  4. Saya memiliki beberapa kueri yang ingin menggabungkan semua hasil kueri ke dalam tabel yang sama

  5. Array pengambilan MySQL menambahkan nilai duplikat?