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

Правилно ли е да се индексират всички колони в база данни на mysql?

Не, не индексирате всички колони. Индексирате колони, които са специално включени в WHERE клауза, а понякога и ако са включени в ORDER BY .

В този случай бихте искали индекс за type :

SELECT name FROM users WHERE type='admin'

В този случай бихте искали индекс на active,type :

SELECT name FROM users WHERE type='admin' AND active=1

В този случай може да искате индекс на active,type,name :

SELECT name FROM users WHERE type-='admin' AND active=1 ORDER BY name LIMIT 10

Колкото повече индекси добавите, толкова по-бавно ще бъде записването, но толкова по-бързо ще бъде четенето. Това е класически компромис. Преценете внимателно какви индекси имате нужда и ги прилагайте само ако има осезаема полза. Не просто ги шамарете, защото чувствате, че трябва да са там.

На супер малки таблици, тези с <1000 реда, индексите няма да помогнат много, защото сканирането на таблицата няма да отнеме толкова време. За всичко нетривиално те са абсолютно необходими.

Ако имате проблеми с производителността, бих предложил вашата схема да е най-голямата пречка, а не липсата на индекси.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP MySQL - Как да вмъкна стойност по подразбиране в подготвен оператор

  2. Препоръки за настройка на производителността на MySQL my.cnf

  3. Точно пагинация с леви присъединявания

  4. PHP MYSQL:начин за изброяване на таблицата във възходящ ред

  5. Symfony Doctrine Migrations, как мога да използвам множество мениджъри на обекти