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

SELECT COUNT(*) е бавен, дори с клауза where

InnoDB използва клъстерирани първични ключове, така че първичният ключ се съхранява заедно с реда в страниците с данни, а не в отделни индексни страници. За да направите сканиране на диапазон, все още трябва да сканирате всички потенциално широки редове в страниците с данни; имайте предвид, че тази таблица съдържа колона TEXT.

Две неща, които бих опитал:

  1. изпълнете optimize table . Това ще гарантира, че страниците с данни се съхраняват физически в сортиран ред. Това би могло да ускори сканирането на обхвата на клъстериран първичен ключ.
  2. създайте допълнителен неосновен индекс само в колоната change_event_id. Това ще съхранява копие на тази колона в индексни страници, които ще бъдат много по-бързи за сканиране. След като го създадете, проверете плана за обяснение, за да се уверите, че използва новия индекс.

(също така вероятно искате да направите колоната change_event_id bigint неподписан ако се увеличава от нула)



  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?

  2. Ляво присъединяване с условие

  3. Sql заявка - ограничаване на резултатите от заявката

  4. NodeJS отговори, че часовата зона на MySQL е различна, когато извличам директно от MySQL

  5. MySQL Създаване на изглед, замяна на изглед и изхвърляне на изявления с примери