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

Оптимизиране на MySql заявка:Твърде бавно при поръчка

Вместо да поставяте Order By в основната заявка, обвийте я, така:

SELECT * FROM (   
  ... your query
) ORDER BY `created at`

Разгледайте плана на заявката. Ще откриете, че във вашия случай сортирането се извършва на вашата таблица mtrt_items преди да се извърши външното свързване. В пренаписването, което частично предоставих, сортирането се прилага след външните съединения и се прилага върху много по-малък набор.

АКТУАЛИЗИРАНЕ

Ако приемем, че LIMIT се прилага към голям набор (500 000?), изглежда, че можете да изпълните горната част, преди да извършите някое от присъединяванията.

SELECT * from (
    SELECT 
    `id`, ... `created_at`, ...
    ORDER BY `i`.`created_at` DESC 
    LIMIT 100 OFFSET 0) as i

    LEFT JOIN `mtrt_users` AS `u` ON i.user_id =u.id

    LEFT JOIN `twt_tweets_content` AS `t` ON t.id =i.id
    LEFT JOIN `twt_users` AS `tu` ON t.user_id = tu.id

    INNER JOIN `mtrt_items_searches` AS `r` ON i.id =r.item_id
    INNER JOIN `mtrt_searches` AS `s` ON s.id =r.search_id
    INNER JOIN `mtrt_searches_groups` AS `sg` ON sg.search_id =s.id
    INNER JOIN `mtrt_search_groups` AS `g` ON sg.group_id =g.id
    INNER JOIN `account_clients` AS `c` ON g.client_id =c.id                

GROUP BY i.id


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Колко памет ще бъде заета от нулева стойност в DB?

  2. Как да заредите JDBC конфигурация от пример за файл със свойства

  3. MySQL прехвърляне на -1 връща 18446744073709551615

  4. Laravel 5.5 не може да изобрази динамични диаграми, използвайки пакета за диаграми на ConsoleTV

  5. Как да изчислим средните продажби на седмица в MySQL