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

Производителност на Mysql в таблица от 6 милиона реда

Това, което искате да сте сигурни, е, че заявката ще използва САМО индекса, така че се уверете, че индексът покрива всички полета, които избирате. Освен това, тъй като е включена заявка за диапазон, трябва първо да имате venid в индекса, тъй като той е заявен като константа. Затова бих създал и индексирал така:

ALTER TABLE events ADD INDEX indexNameHere (venid, date, time);

С този индекс цялата информация, която е необходима за завършване на заявката, е в индекса. Това означава, че да се надяваме, че механизмът за съхранение е в състояние да извлече информацията, без всъщност да търси вътре в самата таблица. Въпреки това MyISAM може да не е в състояние да направи това, тъй като не съхранява данните в листата на индексите, така че може да не получите желаното увеличение на скоростта. Ако случаят е такъв, опитайте да създадете копие на таблицата и използвайте двигателя InnoDB върху копието. Повторете същите стъпки там и вижте дали ще получите значително увеличение на скоростта. InnoDBправи съхранява стойностите на полетата в листата на индекса и позволява покриване на индекси.

Сега се надяваме, че ще видите следното, когато обяснявате заявката:

mysql> EXPLAIN SELECT date, time FROM events WHERE venid='47975' AND date>='2009-07-11' ORDER BY date;

id  select_type table  type  possible_keys        key       [..]  Extra
1   SIMPLE   events range date_idx, indexNameHere indexNameHere   Using index, Using where


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвам изявление CASE в MySQL

  2. Функция MySQL TRUNCATE() – съкращаване на число до определен брой десетични знаци

  3. Възможно ли е да се наложи проверка на данни в MySQL с помощта на регулярен израз

  4. Как да импортирате CSV в MySQL Workbench

  5. Docker Compose свържете ECONNREFUSED 172.18.0.4:3306