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

Нуждае ли се от soft_delete на Laravel индекс на MySQL?

Колоната deleted_at не е добър кандидат за индекс. Ще се опитам да обясня по-добре в сравнение с коментара:индексите са полезни само когато тяхната мощност е относително висока. Кардиналността е число, което описва уникалността на индекса в набора от данни. Това означава, че е общият брой записи, разделен на общия брой уникални записи.

Например, мощността на първичния ключ е 1. Всеки запис съдържа уникална стойност за първичен ключ. 1 също е най-голямото число. Можете да го считате за "100%".

Но колона като deleted_at няма такава стойност. Това, което Laravel прави с deleted_at, е да провери дали е или не е null. Това означава, че има две възможни стойности. Колоните, които съдържат две стойности, имат изключително ниска мощност, която намалява с нарастването на броя на записите.

Можете да индексирате такава колона, но това няма да е от полза. Това, което ще се случи, е, че може да забави нещата и да заеме място.

TL;DR:не, не е нужно да индексирате тази колона, индексът няма да има положително въздействие върху производителността.



  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, без да създавате нова връзка всеки път?

  2. MYSQL не добавя информация към моята база данни

  3. Опитвам се да изпълним операция MINUS в MySQL

  4. Не може да се възстанови root паролата с --skip-grant-tables на ubuntu 16

  5. Как да шифровате трафика от хибридна облачна база данни