东京热成人网站_XX另类XX伦理XXAV_亚洲精品无码成人AAA片_高清av中文字幕无码_手机看片国产欧美日韩高清_bd美妙第进化型

咨詢電話:
15628812133
18
2017/03

如何進(jìn)行SQL優(yōu)化的方法和優(yōu)化技巧

發(fā)布時(shí)間:2017-03-18 16:19:02
發(fā)布者:xiangpeiyu
瀏覽量:
0

1、為什么要對(duì)SQL進(jìn)行優(yōu)化:    我們開發(fā)的項(xiàng)目上線使用的初期,由于業(yè)務(wù)數(shù)據(jù)量相對(duì)較少,一些SQL的執(zhí)行效率對(duì)程序運(yùn)行效率的影響不太明顯,而開發(fā)和運(yùn)維人員也無(wú)法判斷SQL對(duì)程序的運(yùn)行效率有多大,故很少針對(duì)SQL進(jìn)行專門優(yōu)化。而隨著時(shí)間的積累,業(yè)務(wù)數(shù)據(jù)量的增多,SQL的執(zhí)行效率對(duì)程序運(yùn)行效率的影響逐漸增大,此時(shí)對(duì)SQL的優(yōu)化就很有必要。

2、SQL優(yōu)化的準(zhǔn)則:    這個(gè)我們可以使用一句話來(lái)總結(jié):SQL優(yōu)化的準(zhǔn)則就是盡一切可能提高SQL的執(zhí)行效率,從而使得我們程序的運(yùn)行速度很快。

3、SQL優(yōu)化的一些方法:① 設(shè)計(jì)數(shù)據(jù)庫(kù)表結(jié)構(gòu)時(shí),要對(duì)表做數(shù)量級(jí)和性能影響預(yù)測(cè)和評(píng)估,表的字段盡量都設(shè)置default值,盡量避免default為null,主要防止在執(zhí)行SQL查詢時(shí)直接將查詢條件設(shè)置為null或者not null而導(dǎo)致數(shù)據(jù)庫(kù)放棄索引,直接全表掃描;② SQL條件中允許出現(xiàn)庫(kù)函數(shù)和左模糊查詢,sql條件中庫(kù)函數(shù)會(huì)導(dǎo)致數(shù)據(jù)庫(kù)執(zhí)行時(shí)放棄索引,直接全表掃描,而左模糊也是,直接就全表掃描了;③ 原則上,SQL條件中避免出現(xiàn)<>,in,not in,exists,not exists等操作符;④ 子查詢中的實(shí)際查詢結(jié)果要設(shè)置上限要求,且子查詢必須要有索引支持,否則子查詢也去掃描全表就悲劇了;⑤ 單個(gè)事務(wù)的SQL語(yǔ)句數(shù)量要有上限要求,不能前臺(tái)一個(gè)提交操作,后臺(tái)要去插入幾十張表的數(shù)據(jù),那如果是千萬(wàn)級(jí)用戶數(shù),基本上就光去插入數(shù)據(jù)了;⑥ 同上一條類似,單條SQL語(yǔ)句的數(shù)據(jù)影響量也要有上限要求,不能一個(gè)update操作更新了上千條數(shù)據(jù);⑦ 盡量減少多表關(guān)聯(lián)的SQL,如果必須使用多表關(guān)聯(lián),也盡量減少關(guān)聯(lián)的表數(shù)量,且多表關(guān)聯(lián)時(shí),關(guān)聯(lián)字段必須包含在查詢索引中。多表關(guān)聯(lián)SQL中盡量不要使用視圖和代理表;⑧ 充分利用索引,嚴(yán)禁出現(xiàn)表掃描。同時(shí),創(chuàng)建表時(shí)也注意索引的字段順序。

4、其他的話: 一般情況下,不同的行業(yè)數(shù)據(jù)量水平相對(duì)而言是比較固定的,比如電信行業(yè)的數(shù)據(jù)主要以用戶數(shù)為基準(zhǔn),按照省級(jí)行政單位劃分,數(shù)量級(jí)在千萬(wàn)到億級(jí)之間。而法院的數(shù)據(jù)主要以案件數(shù)為基準(zhǔn),按照市級(jí)行政單位劃分,數(shù)量級(jí)在百萬(wàn)到千萬(wàn)之間。(這里只是簡(jiǎn)要描述一下,實(shí)際數(shù)據(jù)量比這個(gè)大得多啊~)一般情況下,系統(tǒng)上線前都會(huì)針對(duì)不同行業(yè)不同地區(qū)的數(shù)據(jù)量做一個(gè)估算,然后再通過超大數(shù)據(jù)量對(duì)系統(tǒng)進(jìn)行性能測(cè)試。但是如果遇到技術(shù)升級(jí)更新或者部署方式發(fā)生改變(比如數(shù)據(jù)集中存放到云上或者分布式部署改為大集中部署),那數(shù)據(jù)量幾乎是十倍百倍的增長(zhǎng),這時(shí)候前期SQL執(zhí)行效率的問題就會(huì)暴露出來(lái)。


關(guān)鍵詞:
返回列表