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

Как да накараме добре индексираните MySQL таблици да се присъединят ефективно

Добре, тествах това върху 30 000+ записа на таблица и работи доста бързо.

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

Първоначално публикувах този отговор като набор от подзаявки, но не осъзнах, че MySQL е болезнено бавен при вложени подзаявки, тъй като се изпълнява отвън навътре. Ако обаче дефинирате подзаявките като изгледи, той ги изпълнява отвътре навън.

Така че, първо създайте изгледите.

CREATE VIEW tbl1_iii AS (
SELECT * FROM tbl1 WHERE val='iii'
);
CREATE VIEW tbl2_iii AS (
SELECT * FROM tbl2 WHERE val='iii'
);

След това стартирайте заявката.

SELECT tbl1_iii.id from tbl1_iii,tbl2_iii
WHERE tbl1_iii.id = tbl2_iii.id;

Светкавица.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JQuery Polling с помощта на MySQL и PHP. Как?

  2. JDBC url за MySQL конфигурация за използване на кодиране на символи utf8

  3. Как да накарам MySQL да знае за многобайтови знаци в LIKE и REGEXP?

  4. как да сортирате колона varchar, съдържаща числови стойности с linq lambdas към Entity

  5. Как да инсталирате MySQL с phpMyAdmin на Debian 7