我有一个页面,我正试图增加一点..
基本上,我当前的 SQL 选择是从页面上选择的选项中随机生成的。
但是,我希望默认排序顺序是随机的;但从我读过的内容来看,我应该避免 MySql 中的嵌套子查询和rand排序。
但是,如果我使用嵌套子查询对返回的有限数量的记录(少于 50 条?)进行排序,该怎么办。
这是一个坏主意吗?如果有一个更大的表,比如 2kk + 行,这会是一个问题吗?
这就是我想做的事情
select * from (
select a.*,b.*
from a
left join b on b.id=a.id
where a.isactive AND etc etc
order by a.id DESC // select say page 2 of 50 newest records
limit 50,50
) tblrand order by rand() // randomize the order of those 50 records
**编辑* * *
将 a.displayorder 的内部顺序更改为 a.id DESC 的顺序,以更好地反映情况,因为默认排序顺序(如果未指定)是最新记录(即... id sorted desc order)
并添加了一些评论
** *已解决* ****(但是我仍然想知道这将如何发展.. 即。对于 mysql 的性能会有多糟糕......提前 tnx)
tnx dbsman ..我以不同的方式思考这个问题。起初我想要完全随机的行,正如我解释的那样,这会让我很头疼……(我把自己想做的事情搞混了:)
但我想我找到了一个解决方案,它对我在应用程序方面的问题很有帮助
//code that gets **Dataset ds** goes here
var rand = new Random();
var result = ds.Tables[0].AsEnumerable().OrderBy(r => rand.Next());
lst.DataSource = result.CopyToDataTable();