我正在将数百万行从表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连接进行检查。如果我用explain运行这个查询,它会进行完整的表扫描,即表1中的所有行(大于1.3亿(。如何在MySQL中优化此查询?
基于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极限10。