1

我有一个页面,我正试图增加一点..

基本上,我当前的 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(); 
4

0 回答 0