选择MySQL中的Random Rows与另一个表进行JOIN

时间:2018-07-27 21:38:03

标签: mysql join random

我正在将数百万行从表1迁移到表2。迁移之后,我试图对某些行进行检查以查看它们是否被正确迁移。这是一个示例SQL查询[不是确切的查询]:

SELECT     tbl1.name,
           tbl1.address,
           tbl2.name,
           tbl2.new_address
FROM       
          (SELECT * 
           FROM table1
           ORDER BY   RAND() limit 10) tbl1
INNER JOIN table2 tbl2
ON         tbl1.name = tbl2.name;

我正在尝试从表1中选择10行与表2一起进行检查。如果运行带有解释的查询,它将进行全表扫描,即表1中的所有行(> 1.3亿)。如何在MySQL中优化此查询?

1 个答案:

答案 0 :(得分:1)

基于http://bigdatums.net/2017/01/05/select-random-sample-records-mysql/的建议

SELECT     tbl1.name,
           tbl1.address,
           tbl2.name,
           tbl2.new_address
FROM       
          (SELECT * 
           FROM table1
           WHERE RAND() < 0.2 LIMIT 10) tbl1
INNER JOIN table2 tbl2
ON         tbl1.name = tbl2.name;

似乎足以满足我的情况,即RAND()<0.2 LIMIT 10。