㈠ MYSQL update 10W條數據太慢我該如何處理
tel 欄位簡歷索引了嗎?
給猜搭啟你個建議,可能你更新的欄位都是索引欄位,建議先把索引都刪掉,更新完數據之後枝李在建立對穗如應的索引。
㈡ 數據條數太多,插入到資料庫有延遲,怎麼解決
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的那些記錄,然後返回給用戶查看。 通過以上步驟之後那麼整個導入功能就完成了,以上只是一種思路,望大家完善。 本站技術原創欄目文章均為中睿原創或編譯,
㈢ 在使用EXCEL數據透視後,進行刷新表格,出現數據透視表更新欄位很慢,不知道為什麼
應該是引用的數據源太大了吧
㈣ 是不是數據表中欄位越多,讀取速度越慢
對於MSSQL來說,你的兩種方法的速度是沒有什行型么區別的,但實際中你會用前一種方法么?SELECT * 在實際運用的很多,雖然相對而悉歲言是要搜索資料庫的全部資源,因而速度會慢一些,但是方便而且明了.
具體用SELECT 欄位,還是SELECT *應該根據你的需要來選擇,搜索的效率來說,小數據量是沒有影響檔陸猜的.
樓主另外一個問題,如果同一個頁面多次用到一個欄位,那肯定推薦用<%=id%>,因為你這樣id=rs("id")本身就是要簡化程序,而且也方便修改.
最重要的是,記錄集rs打開要及時關閉,打開的時候把內容賦值給一個變數,然後再用,是很方便吧:)
㈤ mysql 數據量大 加了索引 聚類查詢還是慢
可以根據條件去添加索引,
一、
所有mysql索引列類型都可以被索引,對來相關類使用索引可以提高select查詢性能,根據mysql索引數,可以是最大索引與最小索引,每種存儲引擎對每個表的至少支持16的索引。總索引長度為256位元組。
mysim和innodb存儲引擎的表默認創建索引都是btree索引,目前mysql還不支持函數索引,但支持前緣索引,對欄位前N個字元創建索引
二、mysql創建索引語法
Create [unioun|fulltext|spatial] index indexname[using indextype] on tablename( tablenamecol)
index_col_name:
col_name[ (length)][asc |desc]
如果你創建索引時搞錯了,需要修改mysql索引我們可以用alert來修改索引,語法與create index創建索引差不多,我們就不說了,卜告可以查看相關手冊。
下面我們來看一個關於mysql創建索引實例教程。
mysql>create index cityname on city(city(2));
Query Ok,600 rows affected (0.26 sec)
Records :600 Duplicates:0 Warings 0:
我們現在來以city為條件進行查詢,如下面。
->explain select * from city where city ='www.111cn.net' G
型帶明id:1
......
possible_keys:cityname
key:cityname
好了,現在我們來看看mysql刪除索引等實例
Drop indexname on tablename
實例,我現在要刪除剛才創建city索引
>drop index cityname on city;
Query ok, .....
不過通常對百萬級數據的查詢或者其行肆他操作,都改換其他的大型的資料庫了
㈥ 資料庫欄位太多,修改欄位就會卡,添加也添加不了,提示欄位大小大於多少,要把類型改成text或blob
添加不了,你可以嘗試將這個欄位給個默認值,或緩鏈磨者允許喚模為null
看你的情況應該是資料庫表在設計的時候可能就有擾斗問題
㈦ java查詢一張表時候同時添加數據到這張表效率會很慢怎麼解決,會造成鎖表的情況嗎
當然可行.我不知道你的理解脊缺是在什麼地方切入的.但是這個問題不太需要涉及到JDBC也就是資料庫的讀寫的內容.
實際上的理解你應該緊扣住"實體"這個關鍵點.JDBC只不過是達到目的的一個手段,實體Bean作為參數在不同的類之間傳遞才是關鍵.
我們舉個例子,這個bank表簡單的具有:ID, bank_name, address 這3個屬性.而實際的項目中,往往一張表能有十幾個欄位甚至更多.
一開始的時候,程序員們都是這樣來讀取資料庫: 例如這張bank表,從資料庫把某一個ID=1的記錄讀出來以後,直接把3個欄位值返回給調用該資料庫類的方法(例如可以採用封裝到一個數組中去的方法).這樣當欄位變多以後會變得非常的麻煩, 例如,很可能段蠢一不小心把返回的欄位給弄顛倒了.
後來這樣的方法進過改進,就成了現在的以實體類封裝數據並進行傳遞的方式.例如一張訂單表:你盡管可能覺得order_date和order_data這2個欄位非常容易混淆.但是如果date是日期類型,data是String類型,那麼你怎麼也不可能把這2個值賦予給錯誤的屬性.
那麼在使用中,首先,你讀出了數據之後,我們再拿bank表作例子,ID=1的表裡的數據如下:ID=1,name=abc,address=nanjing,那麼你實例化一個bank類,然後把這3個值一一 賦予對應的屬性(調用set方法)
而在將這個實體類返回調用者之後,可以調用get方法來查看櫻燃辯.
如果需要看具體的代碼的話可以繼續追問
㈧ sql多加一個欄位過濾後特別慢
你的這個查詢要優化的地方不是not in, 而是整個查詢的結構: 使用了太多的子查詢,而且都是查找的相同的表(GISDUCT表查詢4次),這肯定不是好的查詢方法,應該把你要達到的目的再思考,轉化成合適的查詢語句。
個人認為,你算OCCUPYCOUNT和TOTALCOUNT的子查詢應該可以在一個查做笑詢中搞定的,因為都是查詢GISDUCT表,只是統計取值的條件有所不同廳旁罷了,而按條件統計純伏含可以用類似「case when 條件 then count(xxx) else 0 end」的結構來實現。有問題可再討論。
㈨ 數據量變多之後,為什麼insert數據的時候速度會變慢
insert,會產生redo日誌。而日誌緩沖區衡前敗比較小,這就會造成大量日誌信悔笑息要寫入磁碟。所以大量insert的時咐顫候,要進行不停的寫磁碟。所以慢
㈩ ORACLE 插入大量數據過慢
你是用insert語句,還是用派叢稿oracle的塵孝導入功能?
反正插入數據快的話,你先把索引的語句備份一下,然鄭高後全部drop掉
然後再執行插入操作,插入結束後再建立索引
反正這事也快不了,你先看看我說的那種得多長時間吧