MySQL單表檢索
MySQL單表檢索 自己原文公眾號: https://mp.weixin.qq.com/s/zdeU6rq3qJ6SmzDv3TNtaQ
前幾天遇到了一個問題,有個小夥伴提交了一個SQL:delete from t where trim(XXXX)<time。這句話大約要刪除3000萬條資料。幾乎是全表了。執行了1分鐘沒動靜,有人來問我要怎麼處理?我看了一下,說停止。
這時候我覺得有必要看看需求是什麼?我們為什麼要刪除幾千萬。因為在任何關係型資料庫中delete第一不釋放空間,第二都不快(因為事務較大)。本次是MySQL、直接在監控上發現主從開始延遲。這是因為一個大事務執行的比較慢。
這其實不怪資料庫,因為這本身是違反使用規範的。類似的使用規範在網上隨便都能查得到,我就不發表評論了。那麼一邊停止會話,一邊請提SQL的小夥伴過來一下問問為什麼要刪除?
答案就是查詢慢了。好吧。又是一個老生常談的問題。千萬級單表查詢,Oracle、MySQL、PostgreSQL或者說是一個關係型資料庫就不可能慢。甚至可以說都差不多。(多表再說了)那麼千萬級別出現慢這種情況就幾種可能:
1、沒索引
2、索引建立的不對(順序不對)
3、條件沒用到索引(函式失效)
4、範圍過大(不如不用索引快)
交流了一下,果然不出所料。他就想剛要最近70分鐘的資料。而SQL帶上了函式所以索引失效。刪除也是類似的。這也是常見的錯誤之一。
那麼後來幫他按照他的需求改寫一下。執行一下16毫秒。這才是一個資料庫應該有的樣子。所以一般來說資料庫超過100毫秒的我覺得都應該介入關注一下。因為我見到過不少低於1毫秒的。
在千萬級別的資料中進行檢索,是不會慢的。如果出現慢,請檢查執行計劃對應上面的4種常見可能性。如果進行統計分析,只要帶上合理的條件也是很快的。秒出問題不大,不需要其他等技術。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2847128/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- coreseek,php,mysql全文檢索部署(一)PHPMySql
- coreseek,php,mysql全文檢索部署(二)PHPMySql
- MYSQL——mysql檢索不包含字母U的資料MySql
- Linux Sphinx/Coreseek安裝 Mysql全文檢索LinuxMySql
- Lucene可以對MYSQL進行全文檢索嗎?MySql
- 擊敗二分檢索演算法——插值檢索、快速檢索演算法
- 資訊檢索
- 影象檢索:資訊檢索評價指標mAP指標
- springboot ElasticSearch 簡單的全文檢索高亮Spring BootElasticsearch
- 基於ElasticSearch實現商品的全文檢索檢索Elasticsearch
- 資料檢索
- Elasticsearch檢索文件。Elasticsearch
- Oracle全文檢索Oracle
- Mysql 如何實現全文檢索,關鍵詞跑分MySql
- 【雲圖】自有資料的多邊形檢索(雲檢索)
- 沒辦法了,用 MySQL 做全文檢索也挺好的MySql
- ACM – 5.3 排序檢索ACM排序
- 全文檢索庫 bluge
- ElasticSearch入門檢索Elasticsearch
- ElasticSearch進階檢索Elasticsearch
- PostgreSQL一複合查詢SQL優化例子-(多個exists,範圍檢索,IN檢索,模糊檢索組合)SQL優化
- MySQL單表查詢MySql
- MySQL 單表查詢MySql
- 儲存系統實現-跳躍表實現索引檢索索引
- MySQL檢視建表語句MySql
- Kibana 全文檢索操作
- solr全文檢索學習Solr
- Oracle錯誤號檢索Oracle
- 科技論文的檢索
- Oracle全文檢索之中文Oracle
- 條件過濾檢索
- 關鍵詞感知檢索
- 用Vue擼一個『A-Z字母滑動檢索選單』Vue
- mysql 聯合表(federated)及檢視MySql
- C#漢字拼音檢索C#
- Oracle OCP(15):分層檢索Oracle
- JavaScript陣列檢索指定元素JavaScript陣列
- elasticsearch的實現全文檢索Elasticsearch