【发布时间】:2011-10-04 14:44:50
【问题描述】:
我使用的是 SQL Server 2008。
不久前,我问了一个问题“我应该在联结表中使用 RecordID”。表格如下所示:
// Images
ImageID// PK
// Persons
PersonID // pk
// Images_Persons
RecordID // pk
ImageID // fk
PersonID // fk
强烈建议我不要使用 RecordID,因为它在两个 ID 创建唯一组合的表中没有用,这意味着不会有重复的记录。
现在,我正在尝试在联结表中找到一条随机记录来创建一个测验。我想拉第一个id,看看是否有人可以匹配第二个id。具体来说,我抓取了一张随机图像,并显示了三种可能的人选。
以下查询有效,但我有相当多的消极情绪表明它非常慢。我的数据库可能有 10,000 条记录,所以我认为这并不重要。我还读到生成的值并不是真正随机的。
SELECT TOP 1 * FROM Images_Persons ORDER BY newid();
我是否应该添加 RecordID 列?在这种情况下,有没有更好的方法来查找随机记录?
以前的问题供参考
【问题讨论】:
-
这是完全有效的。
-
您如何看待拥有 RecordID 字段将帮助您更有效地获得随机记录?
-
@Adrian 我也考虑过,但是只要
RecordID列是连续的,您就可以使用RAND。可能有点粗糙。