-
1 # 程式設計字典
-
2 # 一隻小螞蟻呀嘿
把基礎學好,就去多接觸專案,開始基本接觸的都是已經成熟的系統。那就可以對著結構文件看資料庫,看錶,看欄位,看元資料。結合業務透過儲存過程,函式,檢視等看邏輯,慢慢了解業務再去看資料流。一條或多條有關聯的資料,最初在哪裡,中間做了哪些轉換,最終到了哪裡,如何實現。為什麼這麼去做等等。
-
3 # 小逗電競
不請自來。
接觸資料庫很多年了,也接觸了很多種資料庫,你知道truncate和delete的區別嗎?
不同點:
truncate操作不記錄日誌,因此不能回滾,請三思而後行,而delete是可以回滾的。
-
4 # 會點程式碼的大叔
通常我們的SQL都是寫在程式碼中的,執行一次SQL需要經歷網路傳輸、SQL的執行、如果是查詢操作,會有查詢結果返回,再每一個步驟中,都需要注意效率問題。(第二部分會著重說SQL的一些經驗)
減少資料訪問(減少磁碟訪問) :使用索引;
返回更少資料(減少網路傳輸或磁碟訪問) :資料分頁處理、只返回需要的欄位;
減少互動次數(減少網路傳輸) :批次執行、使用儲存過程;
減少伺服器CPU開銷(減少CPU及記憶體開銷):使用繫結變數、合理使用排序、減少比較操作、大量複雜運算在客戶端處理;
利用更多資源(增加資源)。
既然題目中問到了SQL,還是主要說一下SQL的一些技巧,主要是索引的使用。
B-Tree索引:說到資料庫的索引,大多數時候都是指B-Tree索引,B-Tree索引適用於全鍵值、範圍、字首的查詢;主鍵、外來鍵必須有索引,當然很多系統都是邏輯外來鍵(或需要經常和其他表關聯),也需要建立索引;經常出現在where、order by、group by中的欄位;儘量把索引建立到小欄位上;對於文字欄位或者很長欄位,不要建索引;
聯合索引:也是B-Tree索引,這裡單獨拿出來強調一下【聯合索引的最左原則】,如果不是按索引的最左列查詢,那麼將無法使用索引。最左原則:如果建立了一個聯合索引(name,age,gender),相當於建立了三個索引(name)、(name,age)、(name,age,gender)。聯合索引,左邊的列有範圍查詢,那麼右邊的列無法使用索引。比如index(age,gender),where age > 20 and gender = "M";這時候就會有問題。解決辦法也很簡單,兩個欄位分別建立索引。
雜湊索引:是基於雜湊表,精確匹配索引所有列的查詢才有效;
全文索引、聚簇索引、聚簇索引等等,就不詳細說了,因為...我也不太會,幾乎沒有用過。
索引的一些小技巧前導模糊查詢,會導致索引失效:where name like "%XX";
資料區分度不大,不建議使用索引:where gender = "M";性別只有男、女、未知三種;
等號左邊有函式,會索引失效:where LENGTH(col1) = 10;
隱式轉換的問題:where col2 = "100",col2列是數字,等號左右型別不一致,col2會隱式轉換成字串;
儘量不好使用負向查詢,例如:!=、not in、not exists;
單列索引不存null值,複合索引不存全為null的值(索引列儘量使用not null的約束並設定預設值);
索引不是越多越好。
-
5 # 資料指揮
沒有捷徑,只能多寫!
每種資料庫系統的sql看起來都差不多,可是擴充套件過的超集和函式可就差別很大了!
回覆列表
1,學會
2,學透
3,靈活運用
sql教程http://codingdict.com/article/6947