Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP отнема 90 пъти повече време за изпълнение на заявка от MySQL клиента

Давам много закъсняла актуализация по този въпрос:

Не открих причината, но се оказа, че EXPLAIN е различен в PHP спрямо CLI. Не съм сигурен дали някой аспект на връзката ще накара MySQL да избере да използва различно поле за индекса, защото доколкото знам тези неща не трябва да са свързани; но уви, EXPLAIN на PHP показа, че правилният индекс не се използва, докато CLI го направи.

Решението в този (объркващ) случай е да се използва индексен намек . Вижте реда „ОТ“ в тази модифицирана заявка от моя пример:

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;

Надявам се това да помогне на някого!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на курсора в цикъл на съхранена процедура

  2. Как да избегнете символи за боклук/боклук, докато четете данни от множество езици?

  3. Изберете данни от показване на таблици MySQL заявка

  4. MySQL функция SELECT за сумиране на текущите данни

  5. Различните бази данни използват ли различни цитати на имена?