欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql or查詢優(yōu)化,如何進(jìn)行SQL性能優(yōu)化

林雅南2年前90瀏覽0評論
mysql or查詢優(yōu)化,如何進(jìn)行SQL性能優(yōu)化?

一、使用索引 1.單表索引建議控制在5個(gè)以內(nèi) 2.單索引字段數(shù)不允許超過5個(gè)因?yàn)樽侄纬^5個(gè)時(shí),實(shí)際已經(jīng)起不到有效過濾數(shù)據(jù)的作用了。 3.禁止在更新十分頻繁、區(qū)分度不高的屬性上建立索引,因?yàn)楦聲兏麭+樹,更新頻繁的字段建立索引會大大降低數(shù)據(jù)庫性能。 4.性別”這種區(qū)分度不大的屬性,建立索引是沒有什么意義的,不能有效過濾數(shù)據(jù),性 能與全表掃描類似。 5.建立組合索引,必須把區(qū)分度高的字段放在前面,因?yàn)槟軌蚋佑行У倪^濾數(shù)據(jù)。

二、SQL使用規(guī)范優(yōu)化 1.禁止使用SELECT *,只獲取必要的字段,需要顯示說明列屬性。

1.1讀取不需要的列會增加CPU、IO、NET消耗。 1.2不能有效的利用覆蓋索引。 2.禁止使用INSERT INTO t_xxx VALUES(xxx),必須顯示指定插入的列屬性。 2.1容易在增加或者刪除字段后出現(xiàn)程序BUG。 3.禁止使用屬性隱式轉(zhuǎn)換。 3.1 SELECT uid FROM t_user WHERE phone=13812345678 會導(dǎo)致全表掃描,而不 能命中phone索引。 4.禁止在WHERE條件的屬性上使用函數(shù)或者表達(dá)式。 4.1SELECT uid FROM t_user WHERE from_unixtime(day)>='2019-07-15' 會導(dǎo)致全 表掃描。 4.2正確的寫法是:SELECT uid FROM t_user WHERE day>= unix_timestamp('2019-07-15 00:00:00')。 5.禁止負(fù)向查詢,以及%開頭的模糊查詢。 5.1 負(fù)向查詢條件:NOT、!=、<>、!<、!>、NOT IN、NOT LIKE等,會導(dǎo)致全表掃描。 5.2 %開頭的模糊查詢,會導(dǎo)致全表掃描。 6.禁止大表使用JOIN查詢,禁止大表使用子查詢。 6.1會產(chǎn)生臨時(shí)表,消耗較多內(nèi)存與CPU,極大影響數(shù)據(jù)庫性能。 7.禁止使用OR條件,必須改為IN查詢。 7.1舊版本Mysql的OR查詢是不能命中索引的,即使能命中索引,為何要讓數(shù)據(jù)庫耗費(fèi) 更多的CPU幫助實(shí)施查詢優(yōu)化呢? 8.應(yīng)用程序必須捕獲SQL異常,并有相應(yīng)處理 總結(jié):大數(shù)據(jù)量高并發(fā)的互聯(lián)網(wǎng)業(yè)務(wù),極大影響數(shù)據(jù)庫性能的都不能用哦。