㈠ sql操作超大量条数据时如何优化
首先是表设计要合理,要合理使用分区,索引等工具。
再一个就是看你需求是什么,数据分布情况如何。
比如select * from table a where a.col1=1;
这个例子里面,假设表a有一亿数据量,在不考虑分区的情况下,col1的数据分布对检索效果影响极大,比如如果col1是有唯一约束的字段,那很简单,直接通过索引定位,检索时间基本上在毫秒级。
可如果col1是个状态字段,比如只有0,1两个值。而且两个数值分配均匀,那符合条件的检索结果就会有5000w,这时候什么办法都没有,最快的检索方式就是全表扫描。
所以,如果没有具体的示例,是没法解答你的问题的。
㈡ 如何快速更新数据库中的百万条数据
首先,检索数据是为了通过检索的结果,得到讯息,如流水记录、对比记录、统计表格。
而,一个表格显示900W条记录,检索人很难从中获取需要的讯息。
所以,实际应用不会一次性检索大量的数据,而是从大量的数据中筛选一部份数据,或是对大量的数据进行统计计算。
决定检索速度的因素有:
1、表格设计对检索的影响:如合理的主键即索引设计。
2、检索语句的效率:如子句的应用、数据的分组、排序、筛选 等等。
3、数据库管理系统的配置:包括硬件配置、软件配置。
㈢ sql2008数据库,九百万条数据,如何快速查询
根据你说的需求:
"可程序中需要查询每行的所有数据"、“查询全部九百万条数据”
-------------------------------
这样的需求跟索引没有关系了(因为已经肯定是走全表扫描的了),要提高效率的办法就是:1、提高硬盘的io速度;2、增加内存以使sql server有更多的缓存。
另外,你程序不要一次性取那么多数据返回,这样会拖死的,建议你考虑变换下处理逻辑(如:分批取回--可以根据id列值进行分批;将数据直接在服务端存成文本再传回本地处理)。
"而是需要根据这些数据逐一进行其他功能的操作,这款程序是不联网的"
--------------------------------
就算这样的话,也不能一次性把9百万数据一次性取回,如果你非要取出来再操作的话,那你得考虑分批去取。或者你把处理逻辑写在存储过程,然后由SQL SERVER本身去完成逻辑处理。总之,不管怎样,你也是得优化你现在的处理逻辑(现有处理逻辑我觉得不合理,效率很低下)。
“真正部署到电力网的服务器上速度会不会提高呢”
------------------------
服务器当然比你本地要快得多啦,硬件配置根本就不同一个级别,但不管怎样,还是建议你参考上面的建议优化你的处理逻辑才行,否则,你系统的效率将很低。
㈣ MYSQL 从百W级数据表中随机查询10条记录,主键ID是非连续的长整型的,请问有什么高效的查询SQL语句吗
首先程序产生一个随机数,然后大于这个值的取10条
SELECT*FROMtablenameWHEREid>xxxLIMIT10
如果想分开的,那就多产生几个随机数x1x2x3
SELECT*FROMtablenameWHEREid>x1LIMIT10
SELECT*FROMtablenameWHEREid>x2LIMIT10
SELECT*FROMtablenameWHEREid>x2LIMIT10
然后得到的记录再选10条
如果有其他索引的话也可以随机一个大于或小于这个
select*fromtablenamewhereuid>x1andid>xxxlimit10
㈤ 在SQL数据库中有1000w条数据,要对某条数据进行操作,怎样能快速的找到这条数据,要求优化sQL语句
根据主键操作这条数据,或者对你要操作的数据查找的那一列建立索引。如果非要用like查询的话尽量用select * from table where colume like '条件%'
如果 这样select * from table where colume like '%条件%' 是不会走索引的
涉及到联表查询的话用exists代替in操作
㈥ sql 600多W 条数据,执行一个查询,查了6 个多小时,tempdb达到了300多G,直接磁盘满爆了,查询失败!
做好相对应查询条件的索引可以大幅减少查询所需时间,必要时直接生成临时表,会比多表查询效率更高
㈦ 数据量过大时如何使用SQL Server快速读取
顶~ 流香羽 。
但是10000W的数据量,字段数量不多的话,索引还是起一定效果的,如果你的表很复杂多字段PK的话,SQLserver真的提高不了多少效果的,建议还是用Oracle,DB2这样的大型企业级数据库,
目前的SqlServer2008的定点吞吐数据量也不过是千万级的。
㈧ 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