mysql儲存過程是一組為了完成特定功能的
sql語句集,經過編譯之後儲存在資料庫中,當需要使用該組
sql語句時使用者只需要通過指定儲存過程的名字並給定引數就可以呼叫執行它了,簡而言之就是一組已經寫好的命令,需要使用的時候拿出來用就可以了。
因為是提前寫好的,所以執行速度相對於批處理要快
可以多次被呼叫,隨時修改,所以呼叫簡單,使用靈活
還可以通過執行某一儲存過程的許可權進行限制,能設定相應的資料的訪問許可權的限制,保證了資料的安全。
存在意義返回型別呼叫機制
1) 一般用於在資料庫中完成特定的業務 任務的
2) 可以定義返回型別,也可以不定義返回型別
3) sql 語句中不可以呼叫
1) 一般用於特定的資料查詢或資料轉換處理
2) 申請時必須要定義返回型別,且程式體中必須定義return 語句。
3) 不能獨立執行,必須被sql呼叫
索引就是為了我們高效查詢資料,用特定演算法產生的資料結構,這種結構方便進行快速檢索資料,但是會增加資料庫記憶體,如果更新資料同時還要更新索引(結構的實現是b樹及其變種
b+樹)滿足特定查詢演算法
圖展示了一種可能的索引方式。左邊是資料表,一共有兩列七條記錄,最左邊的是資料記錄的實體地址(注意邏輯上相鄰的記錄在磁碟上也並不是一定物理相鄰的)。為了加快col2的查詢,可以維護乙個右邊所示的二叉查詢樹,每個節點分別包含索引鍵值和乙個指向對應資料記錄實體地址的指標,這樣就可以運用二叉查詢在
o(log
2n)的複雜度內獲取到相應資料。
唯一索引
就是不允許存在重複索引值的索引,這樣可以防止資料庫新增重複鍵值的資料
主鍵索引
可以自動建立主鍵索引,要求每個主鍵值不重複,也算唯一索引一種特定型別
聚集索引
讓表中行的順序與鍵值的邏輯順序相同,這樣可以提供剛快訪問速度
提高系統的效能,提供了加快檢索速度,加強檢索能力
通過建立唯一性索引,可以確保每行資料唯一性
加塊了分組排序與表間連線的時間
需要耗費大量時間建立索引,占用空間大
資料庫更新時還需要更新索引
列上建立索引方然是為了發揮索引優勢
加快檢索速度,加強檢索能力-----在經常需要搜尋的列上建立
通過建立唯一性索引,可以確保每行資料唯一性-----在作為主鍵的列上
加塊了分組排序與表間連線的時間-----在經常用到排序、連線的列上
相反不經常查詢得列,資料量大、取值少的列,說白了就是冷門的資料,根本不值得用索引的
合理的為資料庫合理建立索引
優化查詢語句,盡量避免全表掃瞄,select*等,注意在
where
和group by
上建立索引時,盡量不要給字段設定
null
而是not null
,判斷null
會導致放棄索引而全表掃瞄,同理慎用!=,
<>,or
等連線符
建立儲存過程,觸發器,可提高查詢速度。
資料庫優化 使用索引優化儲存過程
資料庫優化 使用索引優化儲存過程 現有資料庫中有乙個儲存過程的查詢時間為25s,最大的乙個表的資料記錄在70 80萬條記錄,感覺還有潛力可以挖掘。經過一系列的優化最後,這個儲存過程的執行時間為3s 4s。下面就講講此次優化的過程。首先是要講一下,這次主要使用到了索引這乙個工具。先說一下索引。一 聚集...
資料庫索引 索引優化
二 三星索引 三 合適設計理想索引 謂詞簡單謂詞和複雜謂詞 where字句中的每個條件稱為乙個謂詞。過濾因子 描述了謂詞的選擇性,即表中滿足謂詞條件的記錄行數所佔的比例 過濾因子 ff 結果集的數量 錶行的數量 平均過濾因子 1 不同列值的數量 索引片及匹配列 乙個索引定義乙個索引片,如果where...
資料庫優化 索引
鑑於csdn無故刪除博文,本部落格不再更新,暫時遷至 2索引每一本書的前幾頁一般都是目錄,而最後幾頁通常會有乙個關鍵字索引。對於資料庫來講系統表 如 sysobjects等 就是目錄,而標字段上的索引就如同書本後面的關鍵字索引。資料庫中,目錄 資料字典 和索引的區別 目錄縱向 索引橫向。優化器根據統...