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

Конфигурация на индекс на Mysql

Актуализация:

Вижте тази статия в моя блог за по-подробен анализ на проблема:

Когато издавате нещо като LIMIT 150000, 10 , това означава, че MySQL трябва да премине тези 150,000 записи и намерете следващите 10 .

Преминаването през индекса е бавно в MySQL .

Също така, MySQL не може да извършва прегледи на късен ред.

Теоретично, ако направите ORDER BY id LIMIT 100000, 10 , достатъчно е да използвате индекса, за да намерите стойностите от 100000 до 100010 , след което потърсете само 10 редове, които удовлетворяват този индекс и ги връщат.

Всички основни системи с изключение на MySQL са наясно с това и търсят редовете нагоре само ако стойностите наистина трябва да бъдат върнати.

MySQL , обаче, търси всеки ред.

Опитайте се да пренапишете заявката си така:

SELECT  news.*
FROM    (
        SELECT  id
        FROM    news
        WHERE   cat_id='4'
        ORDER BY
                id DESC
        LIMIT 150000, 10
        ) o
JOIN    news
ON      news.id = o.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. MySQL, DELETE заявка с Join

  2. REGEXP С PDO Mysql

  3. Как мога да използвам mySQL replace() за заместване на низове в множество записи?

  4. SQL разделен ред, разделен със запетая

  5. MYSQL изберете присъединяване към множество таблици и SUM