sql百万条数据
‘壹’ 请大神看看这段sql哪里有问题,查询几百万条数据将近十几分钟,速度特别慢,还请大神指导。
百万的数据量并不是很大,看样子应该是某一步“卡”了一下,看看执行计划,在哪一步卡住了,然后才好对症下药。
至于语句本身,我没看出什么,就是很普通的联合查询,不过个人觉得,可以考虑把三个条件的先后顺序,毕竟有时可能出现因为过滤条件的原因导致某张大表被遍历两遍(当然最终要根据执行计划来确定,空口白话这么说是没用的)
最后提一个小建议,大概没什么用,我看你的查询字段都是xxid,是不是可以考虑外键,或者簇(这是oracle的),我不知道其他数据库有没有,仅仅是一点建议,行不行我就不知道了。
‘贰’ SQL语句写法:如何一次性从百万条记录中找到希望的数据
首先在zd1和zd2上建立索引
Select [texts] from [tables] where (zd1<23456 and zd2>23456) or (zd1< 13567 and zd2>13567) or (zd1<67543 and zd2>67543) ......
上面这样只能在输出的时候按顺序对比排序
Select [texts] from [tables] where (zd1<23456 and zd2>23456)
union
Select [texts] from [tables] where (zd1<13567 and zd2>13567 )
union
Select [texts] from [tables] where (zd1<67543 and zd2>67543)
这样可以直接按顺序输出.但不知道效率怎样..
‘叁’ sql对100万条数据的查询和统计(主要是统计)效率提升
SELECT count(id)
FROM TBL_POS_SHOP s,
TBL_POS_POS p,
TBL_POS_CUSTOMER c,
TBL_POS_ORDER o,
TBL_POS_CARDINFO cd
WHERE o.POS_CATI = p.POS_CATI
and o.CUSTOMER_ID = c.ID
and o.SHOP_ID = s.ID
and o.CARDINFO_ID = cd.ID
‘肆’ sql2008数据库,九百万条数据,如何快速查询
根据你说的需求:
"可程序中需要查询每行的所有数据"、“查询全部九百万条数据”
-------------------------------
这样的需求跟索引没有关系了(因为已经肯定是走全表扫描的了),要提高效率的办法就是:1、提高硬盘的io速度;2、增加内存以使sql server有更多的缓存。
另外,你程序不要一次性取那么多数据返回,这样会拖死的,建议你考虑变换下处理逻辑(如:分批取回--可以根据id列值进行分批;将数据直接在服务端存成文本再传回本地处理)。
"而是需要根据这些数据逐一进行其他功能的操作,这款程序是不联网的"
--------------------------------
就算这样的话,也不能一次性把9百万数据一次性取回,如果你非要取出来再操作的话,那你得考虑分批去取。或者你把处理逻辑写在存储过程,然后由SQL SERVER本身去完成逻辑处理。总之,不管怎样,你也是得优化你现在的处理逻辑(现有处理逻辑我觉得不合理,效率很低下)。
“真正部署到电力网的服务器上速度会不会提高呢”
------------------------
服务器当然比你本地要快得多啦,硬件配置根本就不同一个级别,但不管怎样,还是建议你参考上面的建议优化你的处理逻辑才行,否则,你系统的效率将很低。
‘伍’ SQL数据库 用存储过程插入100W条数据
看看别人的文章:http://blog.csdn.net/zjcxc/archive/2006/08/20/1099215.aspx 最近在论坛看到有人问,如何快速生成100万不重复的8位编号,对于这个问题,有几点是需要注意的:1. 如何生成8位随机数,生成的数越随机,重复的可能性当然越小2. 控制不重复3. 考虑性能针对这个问题,我写了如下的示例来解决,希望能为有这类需求的人提供指导 生成100万条8位不重复数据的示例USE tempdbGO -- 创建测试表CREATE TABLE tb(id char(8)) -- 创建用于自动过滤重复值的唯一索引CREATE UNIQUE INDEX IX_tb ON tb(id)WITH IGNORE_DUP_KEY GO -- 测试数据插入的处理时间, 记录开始处理的时间点DECLARE @dt datetimeSET @dt = GETDATE() -- 插入随机数据SET NOCOUNT ONDECLARE @row intSET @row = 1000000 -- 设置总记录数WHILE @row >0BEGIN -- 显示提示信息, 表示还需要插入多行数据 RAISERROR('need %d rows', 10, 1, @row) WITH NOWAIT -- 插入随机的位编码数据 SET ROWCOUNT @row INSERT tb SELECT id = RIGHT(100000000 + CONVERT(bigint, ABS(CHECKSUM(NEWID()))), 8) FROM syscolumns c1, syscolumns c2 SET @row = @row - @@ROWCOUNTEND -- 显示插入数据使用的时间SELECT BeginDate = @dt, EndDate = GETDATE(), Second = DATEDIFF(Second, @dt, GETDATE()),GO -- 显示最终的结果记录是否正确SELECT COUNT(*) FROM tbGO -- 删除测试DROP TABLE tb 本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/zjcxc/archive/2006/08/20/1099215.aspx
‘陆’ PL/SQL工具怎么快速将数百万条.sql文件数据插入ORACLE数据库
在确定你的.sql文件没有错误的情况下,在pl/sql命令行模式下使用:"@d:xx.sql" 就可以直接执行。其中路径名称与文件名视你的情况而定(不带"")。操作如图:
还可以控制 每次插入 1000条数据,commit,循环继续插入,保证表空间大小
‘柒’ 查询百万条信息第SQL数据库服务器需要什么配置
能同时超过100+人同时查询数据的服务器,数据库信息超过百万条,建议您使用单路四核机架式服务器
采用英特尔Nahalem架构的四核至强®处理器,英特尔S3420服务器芯片组、2GB DDR3 1333MHz高速大容量内存、250GB硬盘、4U机架式设计,是成长型企业信息化建设极具性价比的普及型服务器解决方案。
处理器:Xeon X3430, 内存:2G DDR3, 硬盘:SATA2 250G, 机构:4U机架式
应用范围:办公OA服务器,ERP服务器,数据库服务器,财务服务器,邮件服务器,打..
产品特点:采用英特尔Nahalem架构的四核至强®处理器,英特尔S3420服务器芯片组、2GB DDR3 1333MHz高速大容量内存、250GB硬盘、4U机架式设计,是成长型企业信息化建设极具性价比的普及型服务器解决方案。
产品型号:I14564312S
产品类型:单路四核机架式服务器
处 理 器:Xeon X3430
内 存:2G DDR3
硬 盘:SATA2 250G
机 构:4U机架式
价 格:¥5699
银牌服务
重庆五年免费上门服务,全国三年免费上门服务,关键部件三年以上免费质保。
给你推荐的是国产服务器品牌正睿的产品,他们的产品性价比很高,售后也很完善,3年免费质保,3年免费上门服务,在业界口碑很不错。
‘捌’ sql百万条数据中筛选重复条目
SELECTB,D,E,COUNT(1)FROMsheet1WITH(NOLOCK)GROUPBYB,D,EHAVINGCOUNT(1)>1;
--or
SELECTB,D,E,COUNT(1)FROMsheet1GROUPBYB,D,EHAVINGCOUNT(1)>1;