sql >> Databasteknik >  >> RDS >> Mysql

PHP tar 90 gånger längre tid att köra frågan än MySQL-klienten

Ger en mycket försenad uppdatering om denna fråga:

Jag har inte hittat orsaken, men det visar sig att EXPLAIN var annorlunda i PHP jämfört med CLI. Jag är inte säker på om någon aspekt av anslutningen skulle få MySQL att välja att använda ett annat fält för indexet, för så vitt jag vet borde dessa saker inte vara relaterade; men tyvärr, PHP:s EXPLAIN visade att det korrekta indexet inte användes, medan CLI:erna gjorde det.

Lösningen i detta (förbryllande) fall är att använda indextips . Se raden "FRÅN" i den här modifierade frågan från mitt exempel:

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;

Hoppas detta hjälper någon!



  1. CSV i SQL-utvecklare...

  2. Är java.sql.Timestamp tidszonspecifik?

  3. Hur man subtraherar 30 dagar från det aktuella datumet med SQL Server

  4. Fixa "datum är inkompatibelt med int" i SQL Server när du lägger till eller drar ifrån ett datum