在mysql中选择10个随机行是大表中最有效的方法

时间:2015-07-05 08:13:28

标签: php mysql performance random

我有一张大桌子,我想快速选择10个随机行。

有时删除行,这意味着我不能在minId - maxId之间随机。

我想要一些没有订单的行。

我尝试了一些我通过Google找到的代码,但这对我没有帮助。 现在我正在使用这段代码:

SELECT `services`.*
FROM `services`
JOIN(
    SELECT `serviceId` AS `sid`
    FROM `services`
    WHERE `services`.`catId` = '{$row["catId"]}' && `subCatId` IS NULL
    ORDER BY RAND( )
    LIMIT 10
    ) tmp
LEFT JOIN `cats` ON `services`.`catId` = `cats`.`catId`
WHERE `services`.`catId` = '{$row["catId"]}' && `subCatId` IS NULL && `services`.`serviceId` = `tmp`.`sid`
GROUP BY `services`.`serviceId`

但页面加载缓慢

我看到了MySQL select 10 random rows from 600K rows fast
它没有帮助我。

非常感谢

0 个答案:

没有答案