sql大数据更新
我搞过一个销售管理的网站,一些客户的浏览记录也很多.
后来我们用了按类型回分表的方法.把一个很长的表答分成了7个表,然后建立视图来把他们弄一起,当然SQL优化是少不了的,尽量减少join和left的次数,适当建立索引.
你朋友圈的话,建议你用Ajax,动态刷新,那么是否考虑在这一次刷新页面的时候在后台先准备好下一次的查询数据呢.因为这个是一段一段的,显示一段,然后准备下一段.
PS:我这只是个人建议,希望能帮到你
⑵ oracle 大数据量update优化方案
sql 写法有问题的,aa 表读了两次。
改写成如下试试
UPDATE aa
SET TRADE_STATUS = '0'
where exists (
select 1 from bb d where d.id= c.id and d.state= c.state
and d.DAY = '20150503'
) and c.TYPE = '1' AND c.PAYDATE is null;
bb 表上的 id 、 state 和 DAY 上应建组合索引,这样子查询效率很高。
aa 表上 TYPE 可以根据数据量考虑是否建索引;如果 TYPE =1 占比很小 (比如小于 1/30 建索引可能快些,否则 全表扫描 一次读取多个数据块;可能全表扫描效率更好)
⑶ 关于sql数据库数据同步更新的问题
环境:两台windows xp系统机器,并且安装同一版本的数据库5.0.17
两台机器Ip
A:173.26.100.62
B:173.26.100.61
此例为A为主服务器,B为从服务器,A服务器上的数据变更会更新到B服务器数据库当中
步骤:
1 .A机器上创建数据库tsas,设置数据库访问权限,也就是创建一个用户和密码,目的在于在B机器上用创建的这个用户能够正常连接A机器的数据库。
grant file on *.* to backup@'173.26.100.61' identified by '1234';
2.在A服务器的mysql目录下编辑my.ini,加入如下语句:
server-id=1
log-bin=C:\mysqlbak\log-bin.log
3.重起A机器,可以用命令show master status 察看状态
4 设置B服务器,打开B机器mysql目录下的my.ini,加入以下语句:
server-id=2
master-host=173.26.100.62
master-user=backup #同步用户帐号
master-password=1234
master-port=3306
master-connect-retry=60 预设重试间隔60秒
replicate-do-db=tsas 告诉slave只做backup数据库的更新
5.重新启动B机器,可以用命令 show slave status察看B机器状态
6.测试:
向A批量插入大数据量数据,那么在B机器当中察看相关的表格,B机器与A机器中的数据是一致的,这样就可以达到B机器同步A机器的数据。
⑷ 请教一个MYSQL 大数据更新问题
update ‘pre_tab’ inner join ‘tre_tab’ on `pre_tab`.`reply_id`=`tre_tab`.`reply_id`
set `pre_tab`.`tid`=`tre_tab`.`tid`
where pre_tab.pid BETWEEN 17000 and 20000
还有即便这样也是全表遍历,不会很快
⑸ 怎么样快速向SQL数据库插入大数据量的数据
添加抄数据需要知道往哪张表添加,以及自己要添加的内容,然后可用insert语句执行。
1、以sqlserver2008r2为例,登录SQL Server Management Studio到指定的数据库。
2、登录后点击“新建查询”。
⑹ sql server如何批量更新数据。
update表名setvalue=casewhenid=1then一个值
whenid=2then一个值
whenid=3then一个值elsevalue
end
上边就是举个例子,意思是,当id=1时,把value设定个值,当id=2时,value设定另一个值,依次类推,不需要更改的保留原来的value值,最后以end结尾
⑺ Oracle更新(update)某大数据量的表的最优方法(语句)请教。解决送分。
建议你通过某个条件把这150万条记录,分成多个部分,写个存储过程,依次执行,执行完一部分就提交一部分。
这样即即减少了对内存的要求,也防止玩意update出错,还要花费大量的时间在回滚上。
⑻ 如何实现在线更新SQL Server千万级记录大表
还需要看你硬盘读写速度 7200转的话应该4千万左右为大数据的阈值 BulkCopy
小于4000万的话,起事务批量更新,在线的话,你需要做一个主从库,从库用来读,就不会影响到用户访问
⑼ 如何提高SQL Server大数据条件下的查询速度
1.关于索引优化
建索引的选择必须结合SQL查询、修改、删除语句的需要,一般的说法是在WHERE里经常出现的字段建索引。如果在WHERE经常是几个字段一起出现而且是用AND连接的,那就应该建这几个字段一起的联合索引,而且次序也需要考虑,一般是最常出现的放前面,重复率低的放前面。
SQL Server提供了一种简化并自动维护数据库的工具。这个称之为数据库维护计划向导(Database Maintenance Plan Wizard ,DMPW)的工具也包括了对索引的优化。如果你运行这个向导,你会看到关于数据库中关于索引的统计量,这些统计量作为日志工作并定时更新,这样就减轻了手工重建索引或者DBCC INDEXDEFRAG所带来的工作量。如果你不想自动定期刷新索引统计量,你还可以在DMPW中选择重新组织数据和数据页,这将停止旧有索引并按特定的填充因子重建索引。
2.
改善硬件(双CPU,Raid 5,增加内存)
tempdb这个临时数据库,它对性能的影响较大。tempdb和其他数据库一样可以增大,可以缩小。当数据文件需要增长的时候,通常不能保持剩余部分的连续性。这时文件就会产生碎片,这种碎片会造成性能下降。这种碎片属于外来性碎片。要阻止在tempdb中产生外来性碎片,必须保证有足够的硬盘空间。一般将tempdb的容量放到平均使用容量。而你也应该允许tempdb自动增长,比如你有个一个超大的join操作,它建立了一个超过tempdb容量的时候,该查询将失败。你还要设置一个合理的单位增长量。因为如果你设得太小,将会产生许多外来性碎片,反而会占用更多资源。sqlserver调优最有效的做法之一,就是把争夺资源的操作独立出去。tempdb就是一个需要独立出去的部分而tempdb和其他系统库一样是公用的,是存取最可能频繁的库,所有处理临时表、子查询、GROUP BY、排序、DISTINCT、连接等等。它最适合放到一个具有快速读写能力的设备上。比如RAID0卷或RAID0+1卷上。
查询语句一定要使用存储过程;
3、查询尽量使用TOP子句
4.将表按一定的约束分成子表,(如按分类)创建约束,在用Like 时,先用分类 and like , 应该可能解决问题. 而且效果立秆见影!(你要确定SQL会认识你建的分区视图).我一个表有上百万的记录(700兆),用分区视图后,查询速度基本跟10万行一样.
如果还是太慢,还可以考滤分布式分区视图!这总可以解决问题了吧!
关键在于你能否把大表按某种约束分解成子表.
⑽ mysql大数据量下的查询与更新
遇到过相似的问题
个人处理经验告诉你
用insert into table (id) values (123456) ON DUPLICATE KEY UPDATE flag =1
代替update table set flag = 1 where id = 123456
谁用谁知道~