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

Клауза WHERE, последвана от JOIN

Мисля, че грешите синтаксиса на SQL за потока на изпълнение, извършен от двигателя на RDBMS:тази заявка

SELECT a,b FROM big b
LEFT JOIN (SELECT b as small_b,c,d FROM small) ON big.b=small.small_b
WHERE b.foo='bar'

ще бъде оптимизиран за извършване на свързване само към редовете на big филтриран от foo='bar' състояние, а не на целия big , от всеки оптимизатор на заявки, който си заслужава, въпреки факта, че WHERE клаузата се появява текстово след JOIN .

Може да искате да пренапишете това без вътрешен SELECT като това:

SELECT t1.a as big_a, t1.b as big_b, t2.b as small_b, t2.c, t2.d
FROM big t1
LEFT JOIN small t2 ON t1.b = t2.b
WHERE t1.foo='bar'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да направя пагинация за JSON данни в PHP?

  2. възможно ли е отдалечен достъп до mysql база данни на споделени хостинги?

  3. Отляво Присъединете се към един случаен запис MySQL

  4. 1064, Имате грешка във вашия SQL синтаксис;... Python MySQL

  5. Как да получите само първия ред от ResultSet