2016 - 2024

感恩一路有你

mysql随机取出10条数据 sql随机抽取几条数据的方法,推荐?

浏览量:2515 时间:2021-03-17 13:26:24 作者:admin

sql随机抽取几条数据的方法,推荐?

四种数据库随机获取10条数据的方法

SQL Server:

SELECT TOP 10 * FROM T_USER ORDER BY NEWID()

ORACLE:

SELECT * FROM (SELECT * FROM T_USER ORDER BY DBMS_RANDOM.RANDOM()) WHERE RONUM <= 10

MySQL:

SELECT * FROM T_USER ORDER BY RAND() LIMIT 10

Access:

SELECT TOP 10 * FROM T_USER ORDER BY rnd([一个自动编号字段])

这条语句在 Access 中的“查询”中是可以运行并得到随机结果的,但在 ASP.NET等后台程序代码中却无法得到预期的随机效果。

正确的写法如下:

以ASP.NET为例:

Random random = new Random(System.Guid.NewGuid().GetHashCode())

int r = random.Next()

string sql = "SELECT TOP 10 * FROM T_USER ORDER BY RND(" (-r) "*自动编号字段)"

mysql表数据量太大,达到了1亿多条数据,除了分库分表之外,还有没有其他的解决方式?

mysql在常规配置下,一般只能承受2000万的数据量(同时读写,且表中有大文本字段,单台服务器)。现在超过1亿,并不断增加的情况下,建议如下处理:

1 分表。可以按时间,或按一定的规则拆分,做到查询某一条数据库,尽量在一个子表中即可。这是最有效的方法

2 读写分离。尤其是写入,放在新表中,定期进行同步。如果其中记录不断有update,最好将写的数据放在 redis中,定期同步

3 表的大文本字段分离出来,成为独立的新表。大文本字段,可以使用NOSQL数据库

4 优化架构,或优化SQL查询,避免联表查询,尽量不要用count(*), in,递归等消耗性能的语句

5 用内存缓存,或在前端读的时候,增加缓存数据库。重复读取时,直接从缓存中读取。

上面是低成本的管理方法,基本几台服务器即可搞定,但是管理起来麻烦一些。


当然,如果整体数据量特别大的话,也不在乎投入费用的话,用集群吧,用TIDB吧

如何利用SQL随机查询出指定数量的数据?

虽说都是使用 SQL, 但是不同的数据库完成这个操作的写法是不同的, 以50条为例.

MySQL

Select * from [表名] where [条件] order by rand() limit 50

SQL Server

Select top 50 * from [表名] group by [Id] order by NEWID()

mysql随机取出10条数据 mysql随机查询十条数据 sql随机抽取数据50条

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。