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

Как да подобрим тази MySQL заявка с помощта на присъединяване?

Имате left join venues , но имате условия в where клауза относно присъединените venues ред, така че ще бъдат върнати само свързани редове. Това обаче е страничен проблем - прочетете защо изобщо не се нуждаете от присъединяване.

След това, ако градът е vancouver , не е необходимо също тест за държава или щат.

И накрая, ако се опитвате да намерите „колко бъдещи събития има във Ванкувър“, нямате нужда от присъединяване, тъй като идентификаторът на мястото е константа!

Опитайте това:

select count(*) as event_count
from events
where venueid = (select id from venues where city = 'vancouver')
and startdate > curdate() 
and te_id != 0

Mysql ще използва индекса на venueid без да се налага да използвате намек. Ако не стане, изпълнете това:

analyze events

което ще актуализира статистиката на разпределението на данните в индексираните колони. Имайте предвид, че ако много от вашите събития са във Ванкувър, по-ефективно е да не използвайте индекс (тъй като повечето от редовете така или иначе ще трябва да бъдат достъпни).



  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 GROUP BY за потоци от дейности

  2. MySQL DROP INDEX

  3. Проверете дали съществува ред, като използвате стар mysql_* API

  4. Как да изтрия дублиращи се записи в mysql база данни?

  5. Търсене със заместващи знаци в пълнотекстово търсене на MySQL