我有一个页面,我正在努力调整一下......
基本上我当前的SQL select是从页面上选择的选项中随机生成的。
但是,我希望默认排序顺序是随机的;但是根据我的阅读,我应该避免MySql中的嵌套子查询,并按 rand 排序。
但是,如果我通过 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排序的desc顺序)
并添加了一些评论
** * 已解决 * **** (但是我还是想知道这会如何发展......也就是说,对于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();