当前位置:首页 » 编程语言 » sql查询500万条
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql查询500万条

发布时间: 2023-02-08 15:54:20

‘壹’ sql 查询结果太多(数万条),导致运行很慢,甚至内存不足出现问题。有什么好的方法可以解决这个问题

我试过一下几个方法:

  1. 尝试把多余的进程关闭了,增加内存,这样速度和查询条数都会增多

  2. 如果有多个关联条件,并且可以拆分,建议用UNION ALL进行查询,效率会有所提高

  3. 如果你只要查询几千条看看效果,那楼上的朋友的建议也是可取的

  4. 尝试下查询中,使用索引列,速度也会有明显增加

具体情况具体分析,笼统的我也就知道这些了,我也是新手哇

‘贰’ sqlserver里有500多万条数据,请问怎么才能通过sqlserver做出如下的透视表呢因为数据太大,excel放不下

百万级别的就别用EXCEL了,不是EXCEL能解决的

‘叁’ 如何将sql中500万条数据通过VS导入到excel表中

Excel承载不了这么大的数据量,即使能导入,你也别想好好操作数据。因为Excel会一次性把全部的数据载入内存,你的电脑开消太大,必定使Excel“未响应”。
还是放弃这个念头吧。
我不明白,数据在数据库里好好的,为什么要一股脑儿导入EXCEL?在数据库中操作不是很方便吗?

‘肆’ sql查询语句在查询分析器里很快,但在.net中很慢。

表里有500W,那你age大于10的有多少?
如果有10条,理论上来说应该是一样的
如果是100W条,那你得写个分页程序了,查询分析器里肯定是没执行完,只是给你显示了一部分结果,你细看看,是不是查询分析器还是在运行状态

‘伍’ sql 超多数据怎么分区好点

这样的项目少于百万级别,就别做了,这百万还只是硬件的上的投入。这几天经常看到你问类似的问题。说实话,这样的性能要求,若纯靠技术手段实现。俺只能呵呵呵了

‘陆’ 现在有一sql数据库,500多万条记录,按名称模糊查询的时候速度很慢,

在名称这个字段上加上索引。这会大大的减少时间,

我昨天坐的一个测试,500万记录 查询需要60秒左右,加索引后只要5秒

如果是第一次查询的时候,它需要占用大量的内存,当内存大小不变时,才开始执行,所以需要一定的时间。

‘柒’ sql语句查询上万条数据。

用NOT IN 是很慢的一种查询方式。
试试用Join。

select a.*, 'N' as chk from pay a
where a.txn_dt = '20090110'
and txn_sta_cd = '6'
union
select * from (
select b.*, isnull(c.txn_user_id,'N') as chk
from pay b left outer join pay c
on b.txn_user_id = c.txn_user_id
and b.txn_dt = c.txn_dt
and b.txn_sta_cd = '7'
and c.txn_sta_cd = '6'
where b.txn_dt = '20090110' ) d
where d.chk = 'N'
=========================================
如果不行, 试试下面的

select a.*, 'N' as chk
from pay a
where a.txn_dt = '20090110'
and a.txn_sta_cd = '6'
union
select * from (
select b.*, isnull(c.txn_user_id,'N') as chk
from
(select * from pay
where txn_dt='20090110'
and txn_sta_cd = '7') b left outer join
(select * from pay
where txn_dt='20090110'
and txn_sta_cd = '7') c
on b.txn_user_id = c.txn_user_id) d
where d.chk = 'N'

强烈要求补分~~~!!!!!!!

‘捌’ SQL 如果 TOP 值 大于表的总数据会不会影响查询速度

在一百万的数据量下测试,发现两种方法的效率相同。
declare @i int
set @i = 1
while @i <= 1000000
begin
insert into MytestTable values(@i,'test')
set @i = @i+1
end

select top 1000001 * from dbo.MytestTable

select * from MytestTable

在我的机器上,查询都是用了7秒钟

-----------------------------
你不加order by不就完了?
order by应该不会提高效率的,微软的机制是这样的,先把所需要的数据查询出来,然后再对相应字段进行排序。所以排序这个过程需要对相应字段进行遍历扫描,需要时间的。

--------------------------
select top 200 * from (select * from user where isdel=0 and istop = 1) as U
where level in (2,5,8) and username like '%哈哈%'
order by U.update desc