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

Оптимизация на база данни на MYSQL с помощта на индексиране

Що се отнася до въпросите за индексите, индексът е не само желателен, но и необходим за "ускоряване" на нещата. Както го разбирам (на „лаик“ термини), функцията на индекса е да ускорява търсенето и възстановяването на данни в таблица.

Причини за използване на индекси:

  1. Идентифицирайте уникално всеки ред във всяка таблица (първичният ключ все пак е индекс)
  2. Индексите са сортирани (дори ако данните не са)
  3. Ускорете търсенията и филтрите:Индексът прави възстановяването на данни по-бързо, тъй като „задържа“ поставянето на данните в таблицата (той „посочва“ данните, които искате да възстановите). Също така улеснява филтрирането на данните от двигателя на базата данни (винаги е по-бързо и по-лесно да се филтрират сортирани данни, отколкото кодирани данни)
  4. Оптимизирайте начина, по който данните се възстановяват, когато използвате свързани таблици:Всеки външен ключ трябва да бъде индексиран, за да се ускорят заявките, които включват връзки между първичен и външен ключ.

Някои „правила на палеца“, които използвам, за да реша кои полета трябва да бъдат индексирани:

  • Всеки първичен ключ е индексиран (очевидният едно:първичният ключ трябва да е уникален, а не нулев)
  • Всеки външен ключ трябва да бъде индексиран (за да бъдат ефективни отношенията между първичен и външен ключ)
  • Всяко числово поле или поле за дата, в което трябва да извършвам търсения, трябва да бъде индексирано. Въпреки това се опитвам да избягвам double (или всеки друг числов тип с плаваща запетая) полета, които трябва да бъдат индексирани, тъй като те обикновено се използват за съхраняване на стойности, които не са предназначени за търсене.
  • Всеки char или varchar полето, в което трябва да извършвам търсения, трябва да бъде индексирано. Опитайте се да избягвате индекси в text полета, тъй като те могат да съдържат много големи стойности в тях.
  • Избягвайте индексиращ двоичен файл (blob ) полета... няма смисъл
  • Не паднете в изкушението да индексирате всичко. Отделете време, за да решите кои полета трябва да бъдат индексирани и кои полетане трябва бъде индексиран.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO грешка:SQLSTATE[HY000]:Обща грешка:2031

  2. Как да проверя за дубликати в таблицата на mysql в множество колони

  3. Преобразувайте дата на mySQL в дата на Javascript

  4. Дефиниране на композитен ключ с автоматично увеличение в MySQL

  5. Добавяне на връзка едно към много към самореферентен родител/дете