1. 資料庫插入數據或更新數據的時候反應很慢,怎麼優化
查詢速度慢,跟你的插入沒多大關系
大表sdy_db_testb的C_testa欄位建索引;
把select a.*,b.c_xname from sdy_db_testb a left join sdy_db_testc b on 1=1 and b.c_testa=a.c_testa改成
select a.*,b.c_xname from sdy_db_testc a left join sdy_db_testb b on 1=1 and b.c_testa=a.c_testa;
即左邊的為小表,這樣就快 了;
不知道你的需求是否要把大表的數據都取出來
如果是都需要取出來的話,慢是必然的!因為要讀的塊數無法減少,IO開銷你怎麼優化都是無用的
2. 數據條數太多,插入到資料庫有延遲,怎麼解決
1.我們往資料庫中導入的數據通常是有固定的模板的,也就是有列頭,但是可能excel中的一條數據分布存儲在不同的數據表中,那麼我們怎麼來導入了,我們可以在類文件中直接拼接sql語句插入,這樣做的話我認為比較麻煩。我的做法是:在數據中建一個中間表暫且叫做Temp表跟excel中列一一對應,其中表中多加state列用來標識數據驗證失敗還是成功的(0代表數據沒有問題,-1代表有問題)、failReason記錄導入失敗原因,然後再添加一個配置文件來做excel列和數據表的映射。 2.要導入的數據通常要做驗證,那些不符合導入規則的數據時不允許或者不能導入的。我把數據分兩步來驗證,一部分在代碼段驗證,一部分在資料庫驗證。至於怎麼分那就自己去根據情況分析了。我是把諸如字元長度限制,正則表達式規則限制等放 在代碼段驗證,把諸如資料庫中字典值是否存在等要訪問資料庫的驗證放在數據中驗證,這樣的話就可以減少訪問資料庫的次數。把再客戶端驗證過的數據,不管是通過的不同過的都插入到temp表中,只是state值不同。 3.然後怎麼把插入temp中數據分別插入到不同的數據表中了,大家一定想到了觸發器,沒有錯,我用的就是after觸發器,在我把excel中的數據插入到temp表中的時候,那麼就會觸發after觸發器,在觸發器中對插入的數據進行處理,如果插入的數據state值為-1,代表在代碼端的驗證就沒有通過,那麼就不需要進行下一步處理了,如果state值為0,那麼在觸發器中接著處理,比如檢測字典值在字典表中存不存在等,如果不滿足要求就把temp表中的當前插入的記錄state值改成-1,把校驗失敗原因更新到failReason欄位中,不再處理。如果一切校驗都沒有問題的話,那麼就編寫插入語句,把數據插入到不同的表中去。 4.數據導入完成了,那麼那些有問題數據怎麼辦了?把它查詢出來生成一個按原模板後加一列「失敗原因」導成excel文件,其實就是state值為-1的那些記錄,然後返回給用戶查看。 通過以上步驟之後那麼整個導入功能就完成了,以上只是一種思路,望大家完善。 本站技術原創欄目文章均為中睿原創或編譯,
3. 請教,往資料庫中插入記錄某張錶速度很慢,而且越來越慢是何原因
3萬條不算太多,沒什麼問題,如果沒條件用SQLSERVER,可以用ACCESS。但是要注意每次使用後關閉數據連接,否則會越來越慢
4. mysql資料庫插入數據很慢
1.逐步排除法,輸出幾個重要步驟的執行時間,找出導致代碼執行時間慢的真正原因,看看是讀取excel慢還是插入資料庫慢或者其他原因
5. mysql 一張有近一百個欄位的表,通過主鍵查詢數據非常慢,查詢一條數據需要2秒左右。怎麼作優化
1張表100個欄位。。。。分表,然後用表外連接查詢可以調高查詢效率,也可以用復合查詢,不過復合查詢效率沒有外連接查詢效率高,但是sql語句寫起來方便。如果數據量不是上百萬級別的,推薦用復合查詢。
6. 如何提高sql資料庫對插入比較長的字元串的速度
首先你要分析出來插入時候慢的原因,
1、磁碟速度慢?
2、表裡欄位創建的索引過多?
3、表在其他的視圖中存在,並且在視圖里創建了索引?
4、插入到的表有觸發器 或者該資料庫有觸發器,引起了其他操作?
綜上所述,找到原因,解決原因,應該就能很快解決的
若你是SQL SERVER,可以用事件探查器監視一下,在該語句執行時的情況,會有助於你分析問題
7. mysql資料庫插入數據很慢,咋回事
如果原表很大,插入數據會非常慢,建議插入到臨時表,然後用一個語句(INSERT
INTO
XXX
SELECT
*
FTOM
TMPXXX)把數據插入,這樣速度會快一點,如果想更快,需要減少不必要的索引,如果大批量的插入,可以插入前刪除索引,插入後重新建立。
8. sql相同資料庫的不同表,一個插入數據正常,一個非常慢的原因
先看下是插的慢,還是查的慢,把你的insert改成select,別的不變,看下效率如何,如果查的很快,插得慢你看下空間和表結構狀況;如果查的也慢,那麼你先看下錶的數據量,然後 考慮表分區,或者建索引。
還要知道你是什麼資料庫
9. access 單個數據表十幾萬條記錄 插入很慢
有幾種提供參考:
1如果只有一個用戶,改為單機版
2另建新資料庫,原資料庫做被查用,把常用的數據放在新資料庫里,舊的保留極少用的。
3改用SQL等大型資料庫系統
10. SQL資料庫添加記錄變慢了,怎麼辦
1、刪除日誌
2、將數據表進行修正一下,每月考勤結束後,將數據移到相應的數據備份表中,這樣數據表中只保留沒有進行考勤匯總的數據,即當前數據。
其他,可能與你的系統設計有關。
不知你添加數據是如何添的
好像不應該用rsquery.open
而應該用:con0.execl("insert into ...."),這樣是沒有問題的。