mysql索引多怎么辦 mysql索引建太多有什么影響

mysql索引建多了有什么壞處

建立索引常用的規(guī)則如下:

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),觀山湖企業(yè)網(wǎng)站建設(shè),觀山湖品牌網(wǎng)站建設(shè),網(wǎng)站定制,觀山湖網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,觀山湖網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

1、表的主鍵、外鍵必須有索引;

2、數(shù)據(jù)量超過(guò)300的表應(yīng)該有索引;

3、經(jīng)常與其他表進(jìn)行連接的表,在連接字段上應(yīng)該建立索引;

4、經(jīng)常出現(xiàn)在Where子句中的字段,特別是大表的字段,應(yīng)該建立索引;

5、索引應(yīng)該建在選擇性高的字段上;

6、索引應(yīng)該建在小字段上,對(duì)于大的文本字段甚至超長(zhǎng)字段,不要建索引;

7、復(fù)合索引的建立需要進(jìn)行仔細(xì)分析;盡量考慮用單字段索引代替: A、正確選擇復(fù)合索引中的主列字段,一般是選擇性較好的字段; B、復(fù)合索引的幾個(gè)字段是否經(jīng)常同時(shí)以AND方式出現(xiàn)在Where子句中?單字段查詢是否極少甚至沒(méi)有?如果是,則可以建立復(fù)合索引;否則考慮單字段索引; C、如果復(fù)合索引中包含的字段經(jīng)常單獨(dú)出現(xiàn)在Where子句中,則分解為多個(gè)單字段索引; D、如果復(fù)合索引所包含的字段超過(guò)3個(gè),那么仔細(xì)考慮其必要性,考慮減少?gòu)?fù)合的字段; E、如果既有單字段索引,又有這幾個(gè)字段上的復(fù)合索引,一般可以刪除復(fù)合索引;

8、頻繁進(jìn)行數(shù)據(jù)操作的表,不要建立太多的索引;

9、刪除無(wú)用的索引,避免對(duì)執(zhí)行計(jì)劃造成負(fù)面影響; 以上是一些普遍的建立索引時(shí)的判斷依據(jù)。一言以蔽之,索引的建立必須慎重,對(duì)每個(gè)索引的必要性都應(yīng)該經(jīng)過(guò)仔細(xì)分析,要有建立的依據(jù)。因?yàn)樘嗟乃饕c不充分、不正確的索引對(duì)性能都毫無(wú)益處:在表上建立的每個(gè)索引都會(huì)增加存儲(chǔ)開(kāi)銷,索引對(duì)于插入、刪除、更新操作也會(huì)增加處理上的開(kāi)銷。另外,過(guò)多的復(fù)合索引,在有單字段索引的情況下,一般都是沒(méi)有存在價(jià)值的;相反,還會(huì)降低數(shù)據(jù)增加刪除時(shí)的性能,特別是對(duì)頻繁更新的表來(lái)說(shuō),負(fù)面影響更大

mysql索引建多了有什么壞處?

如果不是用來(lái)搜尋的字段加了索引,導(dǎo)致插入,更新速度變慢,因?yàn)橐滤饕?

mysql多個(gè)索引的時(shí)候,怎么去索引結(jié)構(gòu)查的

mysql多個(gè)索引的時(shí)候,怎么去索引結(jié)構(gòu)查的

假如你有一個(gè)表,

SQL CREATE TABLE test_tab (2 id INT,

3 name VARCHAR(10),

4 age INT,

5 val VARCHAR(10)6 );你的業(yè)務(wù),有一個(gè)查詢,是

SELECT * FROM test_tab WHERE name = 一個(gè)外部輸入的數(shù)據(jù)

剛開(kāi)始,數(shù)據(jù)不多的時(shí)候,執(zhí)行效果還不錯(cuò)。

隨著數(shù)據(jù)量的增加,這個(gè)查詢,執(zhí)行起來(lái),越來(lái)越慢了。

然后在 name 上面 建立了索引

CREATE INDEX idx_test4_name ON test_tab (name );

這樣, 可以加快前面那個(gè)查詢的速度。

但是,某天,你執(zhí)行了下面這個(gè)SQL, 發(fā)現(xiàn)速度又慢了

SELECT * FROM test_tab WHERE age = 25

為啥呢? 因?yàn)?age 字段上面,沒(méi)有索引

索引只在 name 上面有

換句話說(shuō), 也就是 WHERE 里面的條件, 會(huì)自動(dòng)判斷,有沒(méi)有 可用的索引,如果有, 該不該用。

多列索引,就是一個(gè)索引,包含了2個(gè)字段。

例如:CREATE INDEX idx_test_name_age ON test_tab (name, age);那么SELECT * FROM test_tabWHEREname LIKE '張%'

AND age = 25

這樣的查詢,將能夠使用上面的索引。

多列索引,還有一個(gè)可用的情況就是, 某些情況下,可能查詢,只訪問(wèn)索引就足夠了, 不需要再訪問(wèn)表了。例如:SELECTAVG( avg ) AS 平均年齡FROMtest_tabWHEREname LIKE '張%'

這個(gè)時(shí)候, name 與 age 都包含在索引里面。 查詢不需要去檢索表中的數(shù)據(jù)。

mysql怎么一次刪除表里多個(gè)索引

MYSQL索引信息存儲(chǔ)在INFORMATION_SCHEMA.STATISTICS表里,如果要批量刪除索引(主鍵除外)則可通過(guò)其構(gòu)建批量刪除sql。下面是我刪除pafss庫(kù)中所有以j_打頭的表的索引的sql。批量刪除主鍵可以通過(guò)第二個(gè)sql,但是自增列不能通過(guò)這種方式刪除。

1、SELECT?DISTINCT?(CONCAT('drop?index?',?INDEX_NAME,?'?on?',?TABLE_NAME,?';'))

FROM?INFORMATION_SCHEMA.STATISTICS?T

WHERE?T.TABLE_SCHEMA?=?'pafss'

AND?T.TABLE_NAME?LIKE?'j_%'

AND?T.INDEX_NAME??'PRIMARY';

2、SELECT??DISTINCT(concat('alert?table?',?TABLE_NAME?,'?drop?primary?key?;')),t.*

FROM?INFORMATION_SCHEMA.STATISTICS?T

WHERE?T.TABLE_SCHEMA?=?'pafss'

AND?T.TABLE_NAME?LIKE?'j_%'

AND?T.INDEX_NAME?=?'PRIMARY'

MySQL索引過(guò)多會(huì)產(chǎn)生哪些問(wèn)題

因?yàn)樘嗟乃饕c不充分、不正確的索引對(duì)性能都毫無(wú)益處:

在表上建立的每個(gè)索引都會(huì)增加存儲(chǔ)開(kāi)銷,索引對(duì)于插入、刪除、更新操作也會(huì)增加處理上的開(kāi)銷。

另外,過(guò)多的復(fù)合索引,在有單字段索引的情況下,一般都是沒(méi)有存在價(jià)值的;

相反,還會(huì)降低數(shù)據(jù)增加刪除時(shí)的性能,特別是對(duì)頻繁更新的表來(lái)說(shuō),負(fù)面影響更大

文章題目:mysql索引多怎么辦 mysql索引建太多有什么影響
網(wǎng)址分享:http://muchs.cn/article30/hgieso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣搜索引擎優(yōu)化、營(yíng)銷型網(wǎng)站建設(shè)云服務(wù)器、外貿(mào)建站、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化