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

MySQL EXPLAIN:Използване на индекс срещу използване на условие за индекс

Един пример го обяснява най-добре:

SELECT Year, Make --- possibly more fields and/or from extra tables
FROM myUsedCarInventory
WHERE Make = 'Toyota' AND Year > '2006'

Assuming the Available indexes are:
  CarId
  VIN
  Make
  Make and Year

Тази заявка ще ОБЯСНИ с „Използване на индекс“, защото не се нуждае от изобщо , за да „уцели“ самата таблица myUsedCarInventory, тъй като индексът „Make and Year“ „покрива“ нуждата й по отношение на елементите на клаузата WHERE, които се отнасят до тази таблица .

Сега, представете си, запазваме заявката същата, но за добавяне на условие към цвета

...
WHERE Make = 'Toyota' AND Year > '2006' AND Color = 'Red'

Тази заявка вероятно ще ОБЯСНИ с „Използване на условие за индекс“ („вероятното“, тук е за случая, че Toyota + година няма да бъде оценена като достатъчно селективна и оптимизаторът може да реши просто да сканира таблицата). Това би означавало, че MySQL ще ПЪРВО използвайте индекса, за да разрешите Make + Year, и ще трябва да потърси и съответния ред в таблицата, само за редовете, които отговарят на условията Make + Year. Това понякога се нарича "оптимизация надолу ".



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо идентификаторът на auto_increment не се увеличава един по един, как да го настроя?

  2. MySQL:Трябва да показвам от 1 до максимум n публикация от всеки потребител на всеки ден

  3. Snow Leopard + Ruby 1.9.1 + MySQL Gem =Огромни проблеми

  4. Преобразуване на времеви низ в десетични часове PHP

  5. Липсващи връзки в tomcat jdbc пул за връзки