引言
在實際項目中聪廉,雖然我們開發(fā)出了系統(tǒng)瞬痘,但是這還遠(yuǎn)遠(yuǎn)不夠的,后期系統(tǒng)的優(yōu)化锄列、性能的提升图云、提高系統(tǒng)的安全。這些都是項目開發(fā)中需要經(jīng)歷的階段邻邮,現(xiàn)在我主要談?wù)刴ysql數(shù)據(jù)庫的優(yōu)化技巧竣况。
常用優(yōu)化技巧
1、數(shù)據(jù)表結(jié)構(gòu)的設(shè)計筒严,需符合3NF
2丹泉、添加適當(dāng)?shù)乃饕?br>
3、給數(shù)據(jù)庫表結(jié)構(gòu)使用分表技術(shù)
4鸭蛙、讀寫分離
5摹恨、根據(jù)實際情況使用一些存儲過程
6、對mysql進行一定的配置
7娶视、提高mysql的服務(wù)器配置
8晒哄、碎片整理
以上就是一個項目中mysql常用的優(yōu)化技巧,但是因為工作環(huán)境的約束肪获,我也才實際使用過以上的 1寝凌、2、3孝赫、6较木、7、8點青柄,讀寫分離和存儲過程還沒有機會接觸過伐债,感覺還是挺可惜的预侯。。峰锁。萎馅。
接下來我講的就是實際項目常用的索引技術(shù):
索引技術(shù)是以占用磁盤、對增刪改 影響的代價來換取查詢速率的提升的虹蒋。
常見索引
1校坑、主鍵索引
2、普通索引
3千诬、唯一索引
4、全文索引
以下是我建立的數(shù)據(jù)表結(jié)構(gòu)
查看當(dāng)前表的索引膏斤,可使用命令:
show indexes from 表名(\G)
主鍵索引
<strong>Table</strong> :表的名稱徐绑。
<strong>Non_unique</strong>:如果索引不能包括重復(fù)詞,則為0莫辨。如果可以傲茄,則為1。
<strong>Key_name</strong>:索引的名稱沮榜。
<strong>Seq_in_index</strong>:索引中的列序列號盘榨,從1開始。
<strong>Column_name</strong>:列名稱蟆融。
<strong>Collation</strong>:列以什么方式存儲在索引中草巡。在MySQLSHOW INDEX語法中,有值’A’(升序)或NULL(無分類)型酥。
<strong>Cardinality</strong>:索引中唯一值的數(shù)目的估計值山憨。通過運行ANALYZE TABLE或myisamchk -a可以更新∶趾恚基數(shù)根據(jù)被存儲為整數(shù)的統(tǒng)計數(shù)據(jù)來計數(shù)郁竟,所以即使對于小型表,該值也沒有必要是精確的由境∨锬叮基數(shù)越大,當(dāng)進行聯(lián)合時虏杰,MySQL使用該索引的機會就越大讥蟆。
<strong>Sub_part</strong>:如果列只是被部分地編入索引,則為被編入索引的字符的數(shù)目嘹屯。如果整列被編入索引攻询,則為NULL。
<strong>Packed</strong>:指示關(guān)鍵字如何被壓縮州弟。如果沒有被壓縮钧栖,則為NULL低零。
<strong>Null</strong>:如果列含有NULL,則含有YES拯杠。如果沒有掏婶,則為空。
<strong>Index_type</strong>:存儲索引數(shù)據(jù)結(jié)構(gòu)方法(BTREE, FULLTEXT, HASH, RTREE)
可看到key_name的名稱是PRIMARY潭陪,這個就是主鍵索引:
當(dāng)你指定某個字段為主鍵的時候雄妥,那么那個字段就默認(rèn)為主鍵索引了
唯一索引
現(xiàn)在我給status指定唯一鍵,如下
再查看下索引:
它和主鍵索引一樣依溯,當(dāng)你指定為唯一鍵的時候老厌,也默認(rèn)就指定了唯一索引
普通索引
給某個普通字段,添加索引黎炉,就叫做普通索引
命令: create index 索引名 on 表(字段名)
這時再看下索引
此時這個flag字段枝秤,被指定成了普通索引
全文索引
全文索引其實就像它的名字一樣,主要針對文件和文本的搜索慷嗜,并且只對MyISAM 存儲引擎有效
需使用fulltext創(chuàng)建淀弹,如下創(chuàng)建全文索引:
可以看到已經(jīng)有兩個字段,都建立了索引了
索引的刪除
alter table 表名 drop index 索引名
如果刪除主鍵索引
alter table 表名 drop primary key
索引的使用
比如 使用flag為條件進行查詢時庆械,
select * from where flag=1;
這就可以使用到flag這個字段的普通索引了
不過全文索引的使用比較特殊薇溃,如下使用:
select * from article where match(索引字段名) against(內(nèi)容)
以上就是我對索引的一些總結(jié),如有錯誤缭乘,還望指正