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

Изберете родителски ред само ако няма деца

SELECT id FROM A LEFT OUTER JOIN B ON A.id=B.id WHERE B.id IS NULL

можете да направите това. външното съединение трябва да донесе малко производителност, но не много.

новите системи за бази данни вероятно така или иначе ще оптимизират вашата заявка, така че няма да има разлика.

правилният начин тук е кеширането! опитайте кеша на заявки и кеширането на ниво приложение, ако е възможно.

разбира се, имате нужда от подходящи индекси.

и под правилно имам предвид и двете таблици и за предпочитане хеш индекс, тъй като той ще има статично време за търсене в сравнение с всяко дърво, което има логаритмичен

Опитайте да поставите обяснение преди заявката, за да видите какво наистина забавя това.

ако наистина се нуждаете от това да бъде бързо, можете да преструктурирате структурата си от данни.

бихте могли да създадете тригер за маркиране на флаг в таблица A дали има съответен запис в таблица be. разбира се това дублиране на идентификационни данни, но понякога си заслужава. просто мислете за това като за кеширане.

една последна мисъл:можете да опитате SELECT id FROM A WHERE id NOT IN (SELECT id FROM B) може да е малко по-бързо, защото не е необходимо действително свързване, но може да е и по-бавно, защото търсенето в набора от be ще бъде пълно сканиране. Не съм сигурен как ще бъде обработено това, но може да си струва да опитате.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да накарам CakePHP bake, за да намеря mysql.sock и да разпозная MySQL, докато използвам MAMP на Mac OSX?

  2. ГРЕШКА 1064 (42000):Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на версията на вашия MySQL сървър, за правилния синтаксис, който да използвате

  3. Трябва ли първичните ключове на базата данни да бъдат цели числа?

  4. JPA:как да запазя низ в поле на база данни, напишете MYSQL Text

  5. Възстановете MySQL DB с Unicode знаци (арабски и кюрдски) във формат .gz