mysql数据库 如果数据库中有800万条数据,我想随机抽取10000条,要怎么做抽取的更快

mysql数据库 如果数据库中有800万条数据,我想随机抽取10000条,要怎么做抽取的更快,第1张

什么叫抽取的更快?和什么比更快?你现在是怎么做的?

数据库性能是和很多因素有关的:

想要数据库响应的快,首先要有好的服务器。

如果数据库是在远程服务器上,还要有充足和流畅的带宽网络。

合理安排表的结构,建立索引。

针对你这个,800万条数据如果在一个表里,要有个整数型的ID作为主键,并做索引。如果数据是从不同的表里抽出来再组合起来的,表与表之间的链接键尽量用整数型并做索引。

然后生成10000个随机数,在ID里查找这1万个数字,取出对应的数据。

处理过程放到数据库端。

针对你这个,10000个随机数的生成函数用存储过程的形式存在服务器端。

先创建一个函数

如下

CREATE FUNCTION isnum(

p_string VARCHAR(32) 

)

    RETURNS int(4)

    NOT DETERMINISTIC

    SQL SECURITY DEFINER

    COMMENT '检查字符串是否为纯数字'

BEGIN

/*检查字符串是否为纯数字*/

/*返回值:1-为纯数字 0-非纯数字*/

     DECLARE iResult INT DEFAULT 0

     SELECT p_string REGEXP '^[0-9]*$' INTO iResult

     IF iResult = 1 THEN

        RETURN 1

     ELSE

         RETURN 0

     END IF

END

然后

select * from 表名 where isnum(字段名) <>0 and cast(字段名 as DECIMAL) >1000 and cast(字段名 as DECIMAL)<2000

这句的表名和字段名你替换成你自己的


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/7371337.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-04
下一篇2023-04-04

发表评论

登录后才能评论

评论列表(0条)

    保存