请注意我是初学者。
我有两个问题:
1)如何随机订购查询结果。
示例查询:
$get_questions = mysql_query("SELECT * FROM item_bank_tb WHERE item_type=1 OR item_type=3 OR item_type=4");
2)从表中选择随机行的最佳方法。所以我想说我想从表中随机抓取10行。
非常感谢,
答案 0 :(得分:3)
如果你不介意牺牲选择上的插入/更新/删除操作的复杂性,你总是可以添加一个序列号,并确保它在插入/更新/删除时保持,然后每当你做一个选择,只需在此范围内选择一个或多个随机数。如果“序列”列被编入索引,我认为这与你得到的一样快。
另一种选择是“改组”。添加序列列,将随机值插入此列,每当您选择记录时,按顺序列排序并将选定的记录序列更新为新的随机值。更新应该只影响您检索到的记录,因此不应该太昂贵......但是可能值得针对您的数据集运行一些测试。
这可能是一个相当邪恶的事情,但无论如何我都会说......是否需要显示“随机”数据?如果你试图显示随机记录,你可能会做错事。
想想亚马逊......它们是展示随机产品,还是展示受欢迎的产品,以及“其他人在看到这些产品时购买的东西”。 SO会在此处为您提供随机问题列表,还是相关列表?只是一些值得思考的东西。
答案 1 :(得分:1)
SELECT * FROM item_bank_tb WHERE item_type in(1,3,4) order by rand() limit 10
请注意,rand()的顺序在大型记录集上非常慢。
EDIT。看看这篇非常有趣的文章,它提出了一种不同的方法。
http://explainextended.com/2009/03/01/selecting-random-rows/