在 Java 中,循環(huán)刪除 MySQL 數(shù)據(jù)時,可能會出現(xiàn)刪除操作變慢的情況。這通常是由于循環(huán)過程中頻繁地創(chuàng)建和銷毀數(shù)據(jù)庫連接對象導(dǎo)致的。
成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)慈溪,10多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792
刪除數(shù)據(jù)很慢。實在沒有辦法的話,你可以把刪除命令寫成sql,然后用數(shù)據(jù)庫命令行工具進(jìn)行刪除,要快速很多倍。比如mysql,用它的命令行比自己刪除要快,比批量commit還要快很多。添加數(shù)據(jù)與刪除數(shù)據(jù)都可以這么做。
條數(shù)據(jù)就這么慢,還有別人對其做dml操作。 很可能是鎖表了。
請確保這行是不是數(shù)字類型,因為數(shù)據(jù)類型比字符類型查詢速度更快,最好將這一行設(shè)置一個固定長度,這樣查詢速度更快,如果這個行數(shù)據(jù)長度能短一點更好,越短就意味著查詢速度越快。
如慢嘗試更換網(wǎng)線。網(wǎng)絡(luò)連接速度正常,則嘗試更換調(diào)用的驅(qū)動包,重新下一個或換一個版本。mysql支持幾十萬的數(shù)據(jù),響應(yīng)速度應(yīng)該是毫秒級的??戳讼履愕恼Z句,不要用IN了,改INNER JOIN吧,套那么多層IN,肯定沒效率。
先安裝 Apache Spark,查詢數(shù)據(jù)庫的速度可以提升10倍。在已有的 MySQL 服務(wù)器之上使用 Apache Spark (無需將數(shù)據(jù)導(dǎo)出到 Spark 或者 Hadoop 平臺上),這樣至少可以提升 10 倍的查詢性能。
tel 字段簡歷索引了嗎?給你個建議,可能你更新的字段都是索引字段,建議先把索引都刪掉,更新完數(shù)據(jù)之后在建立對應(yīng)的索引。
這個主鍵ID其實已經(jīng)是有建立了索引的了,而在IN查詢當(dāng)中并沒有用到而已,其實你可以試試IN里的id少些時,是會用到索引的,但當(dāng)IN里的id占據(jù)全表的大部分?jǐn)?shù)據(jù)量時,mysql采用的時全表掃描。
\ 對于 information_schema 中的元數(shù)據(jù)表,執(zhí)行計劃不能提供有效信息。\ 通過查看 MySQL 改寫后的 SQL,我們猜測了優(yōu)化器發(fā)生了誤判。\ 我們增加了 hint,指導(dǎo) MySQL 正確進(jìn)行優(yōu)化判斷。
同事使用delete循環(huán)刪除過一次,時間久不說,表中的數(shù)據(jù)是刪除了,但是查看服務(wù)器發(fā)現(xiàn),*.idb文件大小居高不下,使用optimize table 表名 , 優(yōu)化表以后,內(nèi)存大小恢復(fù)正常。前前后后花費將近4個小時的時間。
1、是不是數(shù)據(jù)量過大,導(dǎo)致delete速度慢。
2、把數(shù)據(jù)、日志、索引放到不同的I/O設(shè)備上,增加讀取速度,以前可以將Tempdb應(yīng)放在RAID0上,SQL2000不在支持。
3、兩種情況:刪除沒有被正確執(zhí)行。刪除的速度低于增加的速度。檢查mssql的錯誤日志,是否delete臨時表的語句執(zhí)行失敗了,比如表在被插入時鎖表,而鎖住了刪除操作。
4、比先刪除在插入速率會快些(需要兩次磁盤操作)。最后:速度的快慢取決于你的操作對索引的影響,先刪除在增加理論上會增加索引碎片。如果你是更新操作的話直接更新索引字段的話,也會導(dǎo)致索引重新排序。大概就是這樣吧。