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

Как да оптимизирам базата данни тази заявка в голяма база данни?

Нямате никакви индекси освен първичния ключ. Трябва да направите индекс на полетата, които използвате във вашия израз WHERE. Ако трябва да индексирате само 1 поле или комбинация от няколко полета зависи от другите SELECT, които ще изпълнявате срещу тази таблица.

Имайте предвид, че REGEXP изобщо не може да използва индекси, LIKE може да използва индекс само когато не започва с заместващ знак (така че LIKE 'a%' може да използва индекс, но LIKE '%a' не може), по-голям от / по-малък от (<>) обикновено също не използват индекси.

Така че остава с code и check полета. Предполагам, че много редове ще имат една и съща стойност за check , така че бих започнал индекса с code поле. Индексите с множество полета могат да се използват само в реда, в който са дефинирани...

Представете си индекс, създаден за полета code, check . Този индекс може да се използва във вашата заявка (където клаузата WHERE съдържа и двете полета), също и в заявката само с code поле, но не и в заявка само с check поле.

Важно ли е ORDER BY 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

  2. Използване на Mysql в командния ред в osx - командата не е намерена?

  3. mysqli_stmt::num_rows() връща грешна стойност

  4. Как да създадете свързан сървър MySQL

  5. MySQL Join въз основа на индексиране YEAR () - добавяне на колона или генерирана колона