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

Използване на SELECT в SELECT в mysql заявка

В MySQL извършването на подзаявка като тази е „корелирана заявка“. Това означава, че резултатите от външния SELECT зависят от резултата на вътрешния SELECT . Резултатът е, че вашата вътрешна заявка се изпълнява веднъж на ред, което е много бавно.

Трябва да преработите тази заявка; дали ще се присъедините два пъти или ще използвате две заявки е почти без значение. Присъединяването два пъти ще ви даде:

SELECT something
FROM posts
INNER JOIN tag_map ON tag_map.id = posts.id
INNER JOIN tags ON tags.tag_id = tag_map.tag_id
WHERE tags.tag IN ('tag1', ...)

За повече информация вижте ръководството на MySQL за конвертиране на подзаявки в JOIN .

Съвет:EXPLAIN SELECT ще ви покаже как оптимизаторът планира да обработи вашето запитване. Ако видите DEPENDENT SUBQUERY трябва да преработите, те са мега-бавни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django/MySQL-python – Връзката с помощта на стар (преди 4.1.1) протокол за удостоверяване е отказана (клиентската опция „secure_auth“ е активирана)

  2. myisam да постави заключване на таблицата на масата дори когато работи със заявка за 'select'?

  3. Импортиране на MYSQL:Не може да се получи геометричен обект от данните, които изпращате в полето GEOMETRY

  4. Java mySQL с 000webhost

  5. Как да направя пълно външно съединяване, за да комбинирам две таблици в mysql?