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
誰用誰知道~