近期在專案中遇到的問題在本文記錄一下。
首先業務內容是通過ip去mysql中查詢相應資訊,批量匯入ip進行查詢。庫中的資料量大約為553萬條。一開始用遍歷單條查詢的方式查詢資料非常慢,查詢1.7萬條數需要十幾分鐘(這也太慢了)網頁都超時了。
專案啟動時讀資料到專案中(不推薦)最開始想到的方法就是空間換時間,先把資料查出來存到專案的list裡 然後用快取的方式查詢專案中的資料,這樣就能避免對資料庫的頻繁訪問。
這種方式存在缺點:
其實如果用這種方法,還可以將這553萬ip轉為long,然後進行排序。查的時候用二分查。但是資料量稍微有點大,從庫中讀出來 再排序可太麻煩了!
in 查詢
select * from table where ip in('1','2','3')
如果是庫中資料小於 查詢資料時候 用exsits
關鍵字
當然效率提高是很不錯,但是查出來的資料不是按照in
後面輸入的順序,是亂序的!解決方法就是排序oder by 咯 ,那麼如何排序?其實有乙個mysql函式可以非常方便的處理此需求 !field()
函式
field()函式如何使用?
select * from table where ip in(1,2,3) order by field(ip,'1','2','3')
具體請看
測試查詢速度,
一開始沒有優化查詢1.7萬條資料需要10幾分鐘。
用不推薦的空間換時間的方式1.7萬條查詢5分鐘查完。
取消空間換時間,最後sql語句優化,8萬條資料需要不到40s就查完了。
優化MongoDB查詢速度
1.盡量不適用正規表示式匹配查詢 正規表示式 datime1 k mycol.find count 19smongodb查詢 1.查詢 name 欄位為 runoob 的資料 myclient pymongo.mongoclient mongodb localhost 27017 mydb mycl...
SQL優化 加快查詢速度
建檢視的時候,盡量避免檢視中呼叫檢視,直接使用表更快些 盡量避免 select from 表名 這種語法,查那個欄位就直接寫哪個字段,如 select id,code from 表名 因為這個 代表的字段可能會很多,你如果不需要也查出來,既浪費時間,有沒用 可以建乙個讀的表,乙個寫的表,定時將實時表...
報表查詢速度優化建議
今天老闆要求說,報表查詢速度太慢了,需要優化。怎麼搞呢?嘿嘿,有幾種常見方法。計算前置 我先提前算好,你到時候看到的只是我的統計結果 優點 速度快 缺點 需要額外建表和儲存空間 靈活性沒有寫sql 改sql來的快,擴充套件性不強,適用於需求變更不大 對查詢速度有較高要求的報表。換db和儲存介質 不是...