$randNo = mt_rand(0,$ProductsCount);
$sql0 = "SELECT sku FROM catalog_product_flat_1 LIMIT ". $randNo . ",10";
$data2=$connection->query($sql2);
$result2=$data2->fetch();
我试图从我的数据库中随机获取SKU(200k产品),其长度为13个字符(30-40%),所以我考虑选择10个产品并获得13个字符的产品如何从这个选择中选择13个字符?或者任何其他更好的方法来解决这个问题我需要尽可能快的速度。
答案 0 :(得分:0)
如果我正确理解您的问题,请尝试:
$sql0 = "SELECT sku FROM catalog_product_flat_1 where LENGTH(sku) = 13 ORDER BY RAND() LIMIT 1";
但是,请参阅此内容以获得可能具有更好性能的更多解决方案:https://stackoverflow.com/a/23568354/2517689
我想我覆盖了@ Barranka的编辑来修复我的RANDOM()到RAND()。感谢您的编辑。
答案 1 :(得分:0)
尝试这样做:
首先,将$ProductsCount
设置为:
select count(*)
from catalog_product_flat_1
where length(sku) = 13;
然后做:
$randNo = mt_rand(0,$ProductsCount);
$sql0 = "SELECT sku FROM catalog_product_flat_1 WHERE length(sku) = 13 LIMIT ". $randNo . ",1";
$data2=$connection->query($sql2);
$result2=$data2->fetch();
这应该比排序更快。