十年專注 提供有品質(zhì)的服務(wù) 15831995993
專注:石家莊網(wǎng)站制作 | 咨詢 13933871212(同微信) 2021-11-30 10:21:08
通過索引排序進(jìn)行優(yōu)化,以減少排序中涉及的記錄數(shù)量,并且不要對(duì)數(shù)據(jù)進(jìn)行不必要的排序。
數(shù)據(jù)庫(kù)設(shè)計(jì)應(yīng)該滿足三個(gè)范例:
第一范式:
1.通過拆分形成的表必須通過外鍵進(jìn)行關(guān)聯(lián)?!?.只要數(shù)據(jù)列中的內(nèi)容是重復(fù)的,就意味著該表應(yīng)該被拆分成多個(gè)表。
第二個(gè)范例:
必須為每組相關(guān)數(shù)據(jù)創(chuàng)建一個(gè)表?!?.必須消除內(nèi)容相似的數(shù)據(jù)列(消除它們的方法是創(chuàng)建另一個(gè)數(shù)據(jù)表來存儲(chǔ)它們并建立關(guān)系)3.每個(gè)數(shù)據(jù)記錄都必須用主鍵標(biāo)記。
第三個(gè)范例: 必須消除與主鍵沒有直接關(guān)系的數(shù)據(jù)列(消除它們的方法是創(chuàng)建另一個(gè)表來存儲(chǔ)它們。
一、sql語句的優(yōu)化
1.盡量少加入
MySQL的優(yōu)勢(shì)在于簡(jiǎn)單,但也是它在某些方面的劣勢(shì)。MySQL優(yōu)化器效率較高,但由于統(tǒng)計(jì)信息量有限,優(yōu)化器工作過程中出現(xiàn)偏差的可能性更大。對(duì)于復(fù)雜的多表Join,一方面是因?yàn)樗膬?yōu)化器有限,另一方面是Join中的努力還不夠,所以性能還是和Oracle等關(guān)系數(shù)據(jù)庫(kù)前輩相差甚遠(yuǎn)。但是,如果是簡(jiǎn)單的單表查詢,這種差距會(huì)非常小,甚至在某些場(chǎng)景下比這些數(shù)據(jù)庫(kù)前輩還要好。
2.試著做一點(diǎn)計(jì)算。Mysql的功能是訪問數(shù)據(jù),而不是做計(jì)算。如果你做計(jì)算,你可以用其他方法來實(shí)現(xiàn)它。mysql非常耗費(fèi)資源。
二、配置優(yōu)化
的配置優(yōu)化實(shí)際上包括兩個(gè)方面:操作系統(tǒng)內(nèi)核的優(yōu)化和mysql配置文件的優(yōu)化。
1.mysql配置優(yōu)化,一般來說包括:IO處理的常用參數(shù)、最大連接數(shù)的設(shè)置、緩存使用參數(shù)的設(shè)置、慢日志參數(shù)的設(shè)置、innodb相關(guān)參數(shù)的設(shè)置等。如果存在主從關(guān)系,可以設(shè)置主從同步的相關(guān)參數(shù)。網(wǎng)上有很多相關(guān)的配置文件,都差不多,修改大部分常用設(shè)置就差不多了。2.系統(tǒng)內(nèi)核的優(yōu)化無非是內(nèi)存效用、連接數(shù)、超時(shí)處理、TCP處理等的優(yōu)化。對(duì)于專用的mysql服務(wù)器,是根據(jù)自身的硬件配置進(jìn)行優(yōu)化的,這里就不討論了。3.盡可能少排序:排序會(huì)消耗更多的CPU資源,因此在緩存命中率高、IO容量充足的場(chǎng)景下,減少排序會(huì)極大地影響SQL的響應(yīng)時(shí)間。