論資料庫索引的重要性

2021-09-28 18:17:42 字數 1101 閱讀 1976

開發人員一般對資料庫的研究都不是太深,很多情況下都會只關心業務層的邏輯跟**的效能優化, 尤其是初學者,對資料庫的研究都比較有限。

例如:做乙個簡單的查詢或者修改 功能時、本來是一段非常簡單的sql語句。

update couponsinfodn set parentresvno='fca77a15-771d-49d1-a7d2-f9e0a0d71dd1', state=0, modifyuser='收銀1', modifytime=getdate(), usedgreencoin='', activitycode='',  usedate='2019-09-19 18:20:24' 

where code='dn20191017175028492232377'  

and startdate<=getdate()

and enddate>=getdate() 

and state=0

這個功能上線時,資料庫的表是新建的,所以感覺不到任何差異,沒有發現任何問題

當上線10天左右時間,這張表中資料達到100萬以上的時候,就會發現,執行這個語句就會發生表死鎖,

然後用sql語句在庫中執行,發現直接表死鎖,這個明顯就是沒有新增字段聯合索引導致的

所以在新增 code startdate enddate state  這4個字段的聚合索引後,發現問題就解決了,效能有原來的8096  直接到了100 毫秒左右。

建立非聚合 的 復合索引

create nonclustered index idx_codedate on couponsinfodn 

(code,startdate,enddate)

說明:create   建立    

nonclustered index  非聚合索引 

idx_codedate    索引名稱 (自定義)

couponsinfodn   需要新增索引的表名

(code,startdate,enddate)   復合索引的 字段,這裡注意一下,字段之間是有順序規則了,否則還是有差異。需要把可以最大程度縮小範圍的字段放在第一位,依次 排列。

論MongoDB索引選擇的重要性

線上某業務,頻繁出現iops 使用率100 的 每秒4000iops 現象,每次持續接近1個小時,從慢請求的日誌發現是乙個 getmore 請求耗時1個小時,導致iops高 深入調查之後,最終發現竟是乙個索引選擇的問題。2017 11 01t15 04 17.498 0800 i command c...

索引的重要性

昨天下午,徐州市百大超市 的吉經理又打 過來,說 商服務系統中的 銷售查詢 模組無法正常執行,鬱悶,難道又要跑一趟?開啟計算機,使用 遠端登入 竟然可以登入到他們的伺服器,想起來他們最近換了光纖,也就不奇怪了,呵呵,爽,不過到時候得建議他們禁用遠端登入啦,呵呵 言歸正傳,看了一下頁面中的 沒問題呀,...

論安全的重要性

論安全的重要性 安全 是乙個永不過時的話題。在我們的現實生活中,無數的事實告訴我們,凡是無視安全的行為必將付出慘痛的代價。世界上每天都在發生著安全事故,汽車超載,超速行駛,闖紅燈 生產單位偷工減料,違規操作 公共服務場所無視安全規範 種種無視安全的情況造成了一起又一起的安全事故。慘痛的教訓告訴我們任...