哪些欄位適合建立索引,資料庫的哪些欄位適合新增索引

時間 2025-05-24 14:55:05

1樓:慎素琴母琴

先正面你的問題。

資料是否重複不是建立索引的重要依據,甚至都不是依據。

只要不完全重複(所有元組的該元素都一樣),那麼建立索引就是有意義的。

即使當前資料完全重複,也不是不能建立索引,這種情況有點複雜,不細說了。

對於你後面的疑問,可以給你乙個如何建立索引的忠告,「如何查就如何建」。

索引的建立,唯一的原因就是為了查詢(廣義的查詢),實際上建立索引會使得資料儲存所佔空間變大,有時索引所佔的空間會查過資料本身的空間。索引的建立也會使得資料插入時變慢,特殊情況下,慢的難以忍受,所以dba的重要工作之一,就是檢查索引層級並優化。

索引建立的唯一好處,就是按照索引查詢時,變快了。type,status這2個欄位是否適合建立索引,就要看你是否要按照這2個欄位進行檢索。而檢索的順序決定了如何建立索引。

對於索引型別和索引方式,我建議就。

normal

和。btree

就適用於首老大多數情況。若你參與的是乙個祥芹斗大資料處理專案,對資料儲存和檢索有特別要求,那麼需要分析多個層面,比如資料吞吐量、資料的方差、平均差等等很多引數才考慮是否用聚集索引等(mysql好像還沒聚集索引),至於是否是唯一索引,我建議不使用,即使能判定資料是唯一的也不要用,謹磨全文索引也沒有必要。

2樓:德有福過嫻

經常需要進行更新操作的屬性。

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

2、資料量超過300的表應該有索引;

3、經常與其他表進行連線的表,在連線欄位上應該建立索引;正搏。

4、經常出現在where子句中的欄位,特別是大表的欄位,應該建立索引;

5、索引應該建在選擇性高的欄位上;

6、索引應該建在小欄位上,對於大的文字欄位甚至超長欄位,不要建索引;

7、複合索引的建立需要進行仔細分析;儘量考慮用單欄位索引代替:

a、正確選擇複合索引中的主列欄位,一般是選擇性較好的欄位;

b、複合索引的幾個欄位是否經常同時以and方式出現在where子句中?單欄位查詢是否極少甚至沒有?如果是,則可以建立複合索引;否則考慮單欄位索引;

c、如果複合索引中包含的欄位經常單獨出現在where子句中,則分解為多個單欄位索引;

d、如果複合索引所包含的欄位超過3個,那麼仔細考慮其必要性,考慮減少複合的欄位;

e、如果既有單欄位索引,又有這幾個欄位上的複合索引,一般可以刪除複合索引;

8、頻繁進行資料操作的表,不要建立太多的索引;

9、刪除無用的索引,避免對執行計劃造成負面影響;

以上是一些普遍的建立索引時的判斷依彎脊據。一言以蔽之,索引的建立必須慎重,對每個索引的必要性都應該經過仔細分析,要有建立的依據。因為太多的索引與不充分、不正確的索引對效能都毫無益處:

在表上建立的每個索引都會增加儲存開銷,索引對於插入、刪除、更新操作也會增加處理上的開銷。另外,過多的複合索引,在有單欄位索引的情況下,一般都是沒有存在價值的;相反,還會降低資料增加刪除時的性埋清滲能,特別是對頻繁更新的表來說,負面影響更大。

資料庫的哪些欄位適合新增索引

3樓:豬八戒網

索引的目的是提高你的查詢速度,當然附帶的後果就是會降低你的資料更新的效能,索引的建立依據談孫陸一般都是根據你實際使用情況而定,也就是說你要用哪個或者那幾個欄位作為查詢條件,就在這個欄位或者這些欄位上面建立索引,也就是所謂的單欄位索引和複合欄位索引,比如含頃:

select * from student where id = 1上面這種情況那自然就是在id上建立索引,複合索引以此類推,索引不是隨意建立的,如果你凱拆用的上,那才能建立索引,如果用不上建立索引反而會降低你的資料庫效能。

建議樓主去查一下有關「利用索引查詢資料提高效能」之類的帖子,這樣你就能對索引的意義有比較深刻的瞭解了。

建立索引時索引可以有多個欄位嗎

4樓:惠企百科

建立索引時索物源核引可以有多個欄位。

索引是一種單獨的、物理的對資料庫表中一列或多列的值進行排序的一種儲存結構,它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的資料頁的邏輯指標清單。索引針對表而建立,每個索引頁面中的行都會含有邏輯指標,以便加速檢索物理資料。

貸款程式的資料庫需要哪些欄位

貸款程式的資料庫中需要多個表,涉及貸款人姓名 身份證號 地址 聯絡 貸款額 貸款利率 還款方式 貸款年月份 貸款日期 擔保人等。 重開六道 機構號 機構名稱 條線劃分 貸款品種 貸款用途 行業類別 額度編號 借據號 借款人客戶號 借款人 放款日期 到期日期 放款金額 剩餘本金 逾期開始日期 逾期天數...

資料庫表欄位郵箱是什麼型別的

varchar。長度一般設為50。varchar 儲存變長資料,其長度不超過 8kb。儲存效率沒有char高。如果一個欄位可能的值是不固定長度的,但是知道這個欄位是不可能超過10個字元,那麼把它定義為 varchar 10 varchar 對每個英文 ascii 字元都佔用2個位元組,對一個漢字也只...

如何查詢某個資料庫的某個表欄位,SQL資料庫,如何查詢資料庫內含有某一列(某欄位,如name)的所有表

流浪還不行嗎 2008沒用過,不懂!不過我覺得應該和2003或者2005是一樣的操作,因為他們都使用的sql語句,變化應該不是很大! select b.name 表名,a.name 欄位名 from syscolumns a join sysobjects b on a.id b.id where ...