1樓:匿名使用者
建立資料庫的目的是管理大量資料,而建立索引的目的就是提高資料檢索效率,改善資料庫工作效能,提高資料訪問速度。當查詢大量資料時不建索引帶條件的查詢會很慢的,索引的建立不同的資料庫有不同的寫法,oracle的寫法是create index 索引名 on 表名();
在select 語句中的where條件每個欄位都要建索引.
索引原理
索引的基本概念索引是一種特殊型別的資料庫物件,它與表有著密切的聯絡。索引是為檢索而存在的。如一些書籍的末尾就專門附有索引,指明瞭某個關鍵字在正文中的出現的頁碼位置,方便我們查詢,但大多數的書籍只有目錄,目錄不是索引,只是書中內容的排序,並不提供真正的檢索功能。
可見建立索引要單獨佔用空間;索引也並不是必須要建立的,它們只是為更好、更快的檢索和定位關鍵字而存在。再進一步說,我們要在圖書館中查閱圖書,該怎麼辦呢?圖書館的前臺有很多叫做索引卡片櫃的小櫃子,裡面分了若干的類別供我們檢索圖書,比如你可以用書名的筆畫順序或者拼音順序作為查詢的依據,你還可以從作者名的筆畫順序或拼音順序去查詢想要的圖書,反正有許多檢索方式,但有一點很明白,書庫中的書並沒有按照這些卡片櫃中的順序排列——雖然理論上可以這樣做,事實上,所有圖書的脊背上都人工的貼上了一個特定的編號①,它們是以這個順序在排列。
索引卡片中並沒有指明這本書擺放在書庫中的第幾個書架的第幾本,僅僅指明瞭這個特定的編號。管理員則根據這一編號將請求的圖書返回到讀者手中。這是很形象的例子,以下的講解將會反覆用到它。
sqls在安裝完成之後,安裝程式會自動建立master、model、tempdb等幾個特殊的系統資料庫,其中master是sqls的主資料庫,用於儲存和管理其它系統資料庫、使用者資料庫以及sqls的系統資訊,它在sqls中的地位與windows下的登錄檔相當。master中有一個名為sysindexes的系統表,專門管理索引。sqls查詢資料表的操作都必須用到它,毫無疑義,它是本文主角之一。
檢視一張表的索引屬性,可以在查詢分析器中使用以下命令:select * from sysindexes where id=object_id(『tablename』) ;而要檢視錶的索引所佔空間的大小,可以使用系統儲存過程命令:sp_spaceused tablename,其中引數tablename為被索引的表名。
2樓:匿名使用者
一、索引的概念
索引就是加快檢索表中資料的方法。資料庫的索引類似於書籍的索引。在書籍中,索引允許使用者不必翻閱完整個書就能迅速地找到所需要的資訊。
在資料庫中,索引也允許資料庫程式迅速地找到表中的資料,而不必掃描整個資料庫。
二、索引的特點
1.索引可以加快資料庫的檢索速度
2.索引降低了資料庫插入、修改、刪除等維護任務的速度
3.索引建立在表上,不能建立在檢視上
4.索引既可以直接建立,也可以間接建立
5.可以在優化隱藏中,使用索引
6.使用查詢處理器執行sql語句,在一個表上,一次只能使用一個索引
7.其他
三、索引的優點
1.建立唯一性索引,保證資料庫表中每一行資料的唯一性
2.大大加快資料的檢索速度,這也是建立索引的最主要的原因
3.加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。
4.在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間。
5.通過使用索引,可以在查詢的過程中使用優化隱藏器,提高系統的效能。
四、索引的缺點
1.建立索引和維護索引要耗費時間,這種時間隨著資料量的增加而增加
2.索引需要佔物理空間,除了資料表佔資料空間之外,每一個索引還要佔一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大
3.當對錶中的資料進行增加、刪除和修改的時候,索引也要動態的維護,降低了資料的維護速度
五、索引分類
1.直接建立索引和間接建立索引
直接建立索引: create index mycolumn_index on mytable (myclumn)
間接建立索引:定義主鍵約束或者唯一性鍵約束,可以間接建立索引
2.普通索引和唯一性索引
普通索引:
create index mycolumn_index on mytable (myclumn)
唯一性索引:保證在索引列中的全部資料是唯一的,對聚簇索引和非聚簇索引都可以使用
create unique coustered index myclumn_cindex on mytable(mycolumn)
3樓:匿名使用者
這裡面很詳細select 語句最常用的 就是 設定索引 提高查詢速度!!
4樓:匿名使用者
1、索引的作用和怎麼建立,樓上的幾位都說了,或者可以找找書看看就懂了;
2、補充問題的參***如下:
select * from sysindexes where id=(select id from sysobjects where name='your_table_name')
and name not like '%_wa_sys_%'
5樓:匿名使用者
索引的用法我也想知道
有關資料庫的問題,看哪位高手可以解決下!
我只會sql 語句,遊標學過,但沒有用過,忘記了哈。select from score group by cno order by degree limit 3 選三條。對了,這個limit反正我在mysql postgre裡面是可以用的,不知道你的資料庫裡能不能用。不過,很基礎的語句,應該都支援吧...
資料庫的題,麻煩高手看一下,急!!資料庫高手,麻煩幫解答考題!
1 select 讀者編號,圖書編號 from 表名 where 作者 張大海 2 select 讀者編號,借閱日期 from 表名 where 書名 like c 3 select 讀者編號,姓名 from 表名 where 借閱日期 getdate 4 select 姓名,已借數量,所借書名,借...
沒有索引與有索引的列資料庫各是如何從磁碟獲取資料的
沒有所以,就直接查詢所需資料,效率很低 前提是你所查詢資料不大於所有資料的30 左右吧,具體有一個index的設定引數可以調整,在優化資料庫的shih 有索引的,先定位rownum,由rownum找到資料所在的行,然後返回給使用者。 隨o天 不管資料表有無索引,首先在sga的資料緩衝區中查詢所需要的...