【问题标题】:Select Random Rows in MySQL for JOIN with another table在 MySQL 中选择 Random Rows 以与另一个表进行 JOIN
【发布时间】:2018-07-27 21:38:03
【问题描述】:

我正在将数百万行从 table1 迁移到 table2。迁移后,我正在尝试抽查某些行以查看它们是否已正确迁移。这是一个示例 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 中优化这个查询?

【问题讨论】:

标签: mysql join random


【解决方案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()

【讨论】:

    猜你喜欢
    • 2012-09-08
    • 2012-09-13
    • 2013-01-25
    • 2012-07-30
    • 2017-02-11
    • 2014-10-12
    • 2011-06-02
    相关资源
    最近更新 更多