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

Оптимизиране на моята mysql заявка за използване на индекс за сортиране

Вярвам, че заявката, която имате, вероятно съответства на голям процент от данните в таблицата. В ситуации като тази MySQL оптимизаторът често избира да направи сканиране на таблицата и да игнорира напълно индексите, тъй като всъщност е по-бързо, отколкото да премине през проблема с допълнителното четене на целия индекс и да го използва за избиране на данните. Така че в този случай предполагам, че public_private='yes' and approved='yes' отговаря на добра част от вашата маса. Следователно, ако MySQL пропусне използването на индекса поради това, той също не е достъпен за сортиране.

Ако наистина искате да използва индекс, тогава решението би било да използвате FORCE INDEX :

select * from videos FORCE INDEX (approved_2) where public_private='public' and approved='yes' order by number_of_views desc;

Въпреки това, бих пуснал някои тестове, за да се уверя, че това, което получавате, всъщност е по-бързо от това, което MySQL оптимизаторът е избрал да направи. Очевидно оптимизаторът има някои проблеми като правите избор за поръчка, така че определено бихте могли да опитате и да видите дали ще получите подобрена производителност.



  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 трябва да се използва за географска ширина/дължина с 8 знака след десетичната запетая?

  2. Атомна операция ли е присъединяването вмъкване/актуализация на MySQL?

  3. Как да добавите разделител към конкатениран низ в MySQL – CONCAT_WS()

  4. Проблем с MySQL „КЪДЕ И“.

  5. Как да се справяме с BLOB и CLOB в olingo v2?