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

MySQL индексиране и използване на сортиране на файлове

В първата ви заявка ORDER BY се извършва с помощта на views_point INDEX, защото е използван в частта WHERE на заявката и следователно в MySQL може да се използва за сортиране.

Във втората заявка MySQL разрешава частта WHERE, използвайки различен индекс, listing_pcs . Това не може да се използва за удовлетворяване на условието ORDER BY. Вместо това MySQL използва сортиране на файлове, което е най-добрият вариант, ако не може да се използва индекс.

MySQL използва индекси само за сортиране, ако индексът е същият като този, използван в условието WHERE. Ето какво ръководството означава чрез:

И така, какво можете да направите:

  1. Опитайте да увеличите своя sort_buffer_size опция config, за да направи сортирането на файлове възможно най-ефективно. Големи резултати, които са твърде големи за буфера за сортиране, карат MySQL да разбие сортирането на парчета, което е по-бавно.

  2. Принуди MySQL да избере различен индекс. Струва си да се отбележи, че различните версии на MySQL избират индексите по подразбиране по различен начин. Версия 5.1, например, е доста лоша, тъй като оптимизаторът на заявки беше значително пренаписан за тази версия и се нуждаеше от много усъвършенстване. Версия 5.6 е доста добра.

    SELECT *
    FROM listings
    FORCE INDEX (views_point)
    WHERE (`publishedon_hourly` BETWEEN
           UNIX_TIMESTAMP( '2015-09-5 00:00:00' )
           AND UNIX_TIMESTAMP( '2015-09-5 12:00:00' ))
      AND (published =1)
      AND cat_id IN ( 1, 2, 3, 4, 5 )
    ORDER BY `views_point` DESC
    LIMIT 10
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL извлича променлива от Съхранена процедура в PHP PDO

  2. Екраниране на имена на колони в PDO изрази

  3. Пагинация в PDO PHP

  4. Анулиране на чакащи AJAX заявки в приложението PHP?

  5. Транспониране на динамични колони в редове