我正在将数百万行从表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中优化这个查询?
1条答案
按热度按时间hkmswyz61#
基于http://bigdatums.net/2017/01/05/select-random-sample-records-mysql/
似乎对我的情况就足够了,即rand()<0.2 limit 10。