Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wykonanie zapytania w PHP trwa 90 razy dłużej niż w przypadku klienta MySQL

Podajemy bardzo spóźnioną aktualizację tego pytania:

Nie znalazłem przyczyny, ale okazuje się, że EXPLAIN było inne w PHP niż w CLI. Nie jestem pewien, czy jakikolwiek aspekt połączenia spowodowałby, że MySQL wybrałby użycie innego pola dla indeksu, ponieważ o ile wiem, te rzeczy nie powinny być ze sobą powiązane; ale niestety, EXPLAIN PHP pokazał, że właściwy indeks nie był używany, podczas gdy CLI tak.

Rozwiązaniem w tym (zagadkowym) przypadku jest użycie podpowiedzi do indeksu . Zobacz wiersz „FROM” w tym zmodyfikowanym zapytaniu z mojego przykładu:

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;

Mam nadzieję, że to komuś pomoże!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak skutecznie połączyć się z mysql w php bez ponownego łączenia się przy każdym zapytaniu?

  2. Wprowadzenie do wysokiej dostępności baz danych dla MySQL i MariaDB

  3. Java - Wyjątek w głównym wątku java.lang.Błąd:nierozwiązane problemy z kompilacją

  4. Łączysz się z wieloma instancjami CloudSQL za pomocą serwera proxy Cloud sql?

  5. Policz wystąpienia podciągu w kolumnie MySQL