一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫(kù)技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫(kù) - Mysql - mysql數(shù)據(jù)庫(kù)優(yōu)化需要遵守的原則

mysql數(shù)據(jù)庫(kù)優(yōu)化需要遵守的原則

2019-12-14 15:41MYSQL教程網(wǎng) Mysql

這是我在網(wǎng)上看到的一篇不錯(cuò)的mysql數(shù)據(jù)庫(kù)優(yōu)化文章,拿出來(lái)和大家分享,希望可以幫助你們

這是我在網(wǎng)上看到的一篇不錯(cuò)的mysql數(shù)據(jù)庫(kù)優(yōu)化文章,內(nèi)容說(shuō)的很全! 
1、使用索引來(lái)更快地遍歷表 
缺省情況下建立的索引是非群集索引,但有時(shí)它并不是最佳的。在非群集索引下,數(shù)據(jù)在物理上隨機(jī)存放在數(shù)據(jù)頁(yè)上。合理的索引設(shè)計(jì)要建立在對(duì)各種查詢的分析和預(yù)測(cè)上。一般來(lái)說(shuō): 
a.有大量重復(fù)值、且經(jīng)常有范圍查詢( > ,< ,> =,< =)和order by、group by發(fā)生的列,可考慮建立群集索引; 
b.經(jīng)常同時(shí)存取多列,且每列都含有重復(fù)值可考慮建立組合索引; 
c.組合索引要盡量使關(guān)鍵查詢形成索引覆蓋,其前導(dǎo)列一定是使用最頻繁的列。索引雖有助于提高性能但不是索引越多越好,恰好相反過(guò)多的索引會(huì)導(dǎo)致系統(tǒng)低效。用戶在表中每加進(jìn)一個(gè)索引,維護(hù)索引集合就要做相應(yīng)的更新工作。 
2、在海量查詢時(shí)盡量少用格式轉(zhuǎn)換 
3、ORDER BY和GROPU BY:使用ORDER BY和GROUP BY短語(yǔ),任何一種索引都有助于SELECT的性能提高。 
4、任何對(duì)列的操作都將導(dǎo)致表掃描,它包括數(shù)據(jù)庫(kù)函數(shù)、計(jì)算表達(dá)式等等,查詢時(shí)要盡可能將操作移至等號(hào)右邊。 
5、IN、OR子句常會(huì)使用工作表,使索引失效。如果不產(chǎn)生大量重復(fù)值,可以考慮把子句拆開(kāi)。拆開(kāi)的子句中應(yīng)該包含索引。 
6、只要能滿足你的需求,應(yīng)盡可能使用更小的數(shù)據(jù)類型:例如使用MEDIUMINT代替INT 
7、盡量把所有的列設(shè)置為NOT NULL,如果你要保存NULL,手動(dòng)去設(shè)置它,而不是把它設(shè)為默認(rèn)值。 
8、盡量少用VARCHAR、TEXT、BLOB類型 
9、如果你的數(shù)據(jù)只有你所知的少量的幾個(gè)。最好使用ENUM類型 
10、正如graymice所講的那樣,建立索引。 
以下是我做的一個(gè)實(shí)驗(yàn),可以發(fā)現(xiàn)索引能極大地提高查詢的效率: 
我有一個(gè)會(huì)員信息表users,里邊有37365條用戶記錄: 
在不加索引的時(shí)候進(jìn)行查詢: 
sql語(yǔ)句A: 
代碼: 

復(fù)制代碼代碼如下:


select * from users where username like '%許%'; 


在Mysql-Front中的8次查詢時(shí)長(zhǎng)為:1.40,0.54,0.54,0.54,0.53,0.55,0.54 共找到960條記錄 
sql語(yǔ)句B: 
代碼: 

復(fù)制代碼代碼如下:


select * from users where username like '許%'; 


在Mysql-Front中的8次查詢時(shí)長(zhǎng)為:0.53,0.53,0.53,0.54,0.53,0.53,0.54,0.54 共找到836條記錄 
sql語(yǔ)句C: 
代碼: 

復(fù)制代碼代碼如下:


select * from users where username like '%許'; 


在Mysql-Front中的8次查詢時(shí)長(zhǎng)為:0.51,0.51,0.52,0.52,0.51,0.51,0.52,0.51 共找到7條記錄 
為username列添加索引: 
代碼: 

復(fù)制代碼代碼如下:


create index usernameindex on users(username(6)); 


再次查詢: 
sql語(yǔ)句A: 
代碼: 

復(fù)制代碼代碼如下:


select * from users where username like '%許%'; 


在Mysql-Front中的8次查詢時(shí)長(zhǎng)為:0.35,0.34,0.34,0.35,0.34,0.34,0.35,0.34 共找到960條記錄 
sql語(yǔ)句B: 
代碼: 

復(fù)制代碼代碼如下:


select * from users where username like '許%'; 


在Mysql-Front中的8次查詢時(shí)長(zhǎng)為:0.06,0.07,0.07,0.07,0.07,0.07,0.06,0.06 共找到836條記錄 
sql語(yǔ)句C: 
代碼: 

復(fù)制代碼代碼如下:


select * from users where username like '%許'; 


在Mysql-Front中的8次查詢時(shí)長(zhǎng)為:0.32,0.31,0.31,0.32,0.31,0.32,0.31,0.31 共找到7條記錄 
在實(shí)驗(yàn)過(guò)程中,我沒(méi)有另開(kāi)任何程序,以上的數(shù)據(jù)說(shuō)明在單表查詢中,建立索引的可以極大地提高查詢速度。 
另外要說(shuō)的是如果建立了索引,對(duì)于like '許%'類型的查詢,速度提升是最明顯的。因此,我們?cè)趯憇ql語(yǔ)句的時(shí)候也盡量采用這種方式查詢。 
對(duì)于多表查詢我們的優(yōu)化原則是: 
盡量將索引建立在:left join on/right join on ... +條件,的條件語(yǔ)句中所涉及的字段上。 
多表查詢比單表查詢更能體現(xiàn)索引的優(yōu)勢(shì)。 
11、索引的建立原則: 
如果一列的中數(shù)據(jù)的前綴重復(fù)值很少,我們最好就只索引這個(gè)前綴。Mysql支持這種索引。我在上面用到的索引方法就是對(duì)username最左邊的6個(gè)字符進(jìn)行索引。索引越短,占用的 磁盤空間越少,在檢索過(guò)程中花的時(shí)間也越少。這方法可以對(duì)最多左255個(gè)字符進(jìn)行索引。 
在很多場(chǎng)合,我們可以給建立多列數(shù)據(jù)建立索引。

索引應(yīng)該建立在查詢條件中進(jìn)行比較的字段上,而不是建立在我們要找出來(lái)并且顯示的字段上 
12、一往情深問(wèn)到的問(wèn)題:IN、OR子句常會(huì)使用工作表,使索引失效。如果不產(chǎn)生大量重復(fù)值,可以考慮把子句拆開(kāi)。拆開(kāi)的子句中應(yīng)該包含索引。 
這句話怎么理解決,請(qǐng)舉個(gè)例子 
例子如下
如果在fields1和fields2上同時(shí)建立了索引,fields1為主索引 
以下sql會(huì)用到索引 
代碼: 

復(fù)制代碼代碼如下:


select * from tablename1 where fields1='value1' and fields2='value2' 


以下sql不會(huì)用到索引 
代碼: 
select * from tablename1 where fields1='value1' or fields2='value2' 
[/code] 
13.索引帶來(lái)查詢上的速度的大大提升,但索引也占用了額外的硬盤空間(當(dāng)然現(xiàn)在一般硬盤空間不成問(wèn)題),而且往表中插入新記錄時(shí)索引也要隨著更新這也需要一定時(shí)間。 
有些表如果經(jīng)常insert,而較少select,就不用加索引了.不然每次寫入數(shù)據(jù)都要重新改寫索引,花費(fèi)時(shí)間; 這個(gè)視實(shí)際情況而定,通常情況下索引是必需的。

14.我在對(duì)查詢效率有懷疑的時(shí)候,一般是直接用Mysql的Explain來(lái)跟蹤查詢情況。 
你用Mysql-Front是通過(guò)時(shí)長(zhǎng)來(lái)比較,我覺(jué)得如果從查詢時(shí)掃描字段的次數(shù)來(lái)比較更精確一些。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜大片在线观看 | 四虎影院免费在线 | 99国产精品热久久久久久夜夜嗨 | 天天视频官网天天视频在线 | 果冻传媒新在线观看免费 | 91麻豆精品国产自产在线 | 华人在线视频 | 俄罗斯引擎首页进入 | 欧美坐爱 | 午夜私人福利影院 | 黄蓉h系列 | 亚洲麻豆精品果冻传媒 | 羞羞私人影院可以直接免费观影吗 | 催奶师小说| 91精品导航在线观看 | 91精品天美精东蜜桃传媒免费 | 亚洲热图 | 欧美成人aletta ocean | 范冰冰性xxxxhd | 午夜理论电影在线观看亚洲 | 亚洲女性色尼古综合网 | 国产9191精品免费观看 | 99re7在线精品免费视频 | 放荡护士玩3p口述 | 娇妻被朋友征服中文字幕 | 精品成人一区二区 | 日本动漫打扑克动画片樱花动漫 | 无敌秦墨漫画免费阅读 | hd性欧美俱乐部中文 | 日产精品一二三四区国产 | www.日日日| 无码乱人伦一区二区亚洲 | 四虎影院网站 | 日韩成人一区ftp在线播放 | 免费看a片毛片 | 天堂在线看 | 小伙无套内射老女人 | 欧美亚洲国产另类 | 天天综合网网欲色 | 美女视频在线观看视频 | 日韩xx00 |