4 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
索引是以表列為基礎(chǔ)的數(shù)據(jù)庫(kù)對(duì)象,索引中保存著表中排序的索引列,并且紀(jì)錄了索引列在數(shù)據(jù)庫(kù)表中的物理存儲(chǔ)位置,實(shí)現(xiàn)了表中數(shù)據(jù)的邏輯排序。
通過索引,可以加快數(shù)據(jù)的查詢速度和減少系統(tǒng)的響應(yīng)時(shí)間;
可以使表和表之間的連接速度加快。
用SQL建立索引:
為了給一個(gè)表建立索引,啟動(dòng)任務(wù)欄SQL Sever程序組中的ISQL/w程序。進(jìn)入查詢窗口后,輸入下面的語(yǔ)句:
CREATE [UNIQUE] [CLUSER] INDEX <索引名> ON <表名> (<列名>);
UNIQUE 表明此索引的每一個(gè)索引值只對(duì)應(yīng)唯一的數(shù)據(jù)記錄
CLUSTER 表明要建立的是聚簇索引(指索引項(xiàng)的順序與表中記錄的物理順序一致)
例:CREATE CLUSER INDEX Stuname ON Student(Sname);
在student表的sname列建立一個(gè)聚簇索引,student中記錄按照sname值的升序排列.

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
CREATE INDEX 實(shí)例
本例會(huì)創(chuàng)建一個(gè)簡(jiǎn)單的索引,名為 "PersonIndex",在 Person 表的 LastName 列:
CREATE INDEX PersonIndex
ON Person (LastName)
如果您希望以降序索引某個(gè)列中的值,您可以在列名稱之后添加保留字 DESC:
CREATE INDEX PersonIndex
ON Person (LastName DESC)
假如您希望索引不止一個(gè)列,您可以在括號(hào)中列出這些列的名稱,用逗號(hào)隔開:
CREATE INDEX PersonIndex
ON Person (LastName, FirstName)

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊
如果你查詢的字段都在索引中,那么可以只查詢索引,不用查詢表,就可以輸出數(shù)據(jù)。
這是建索引時(shí)的一種考慮。
但是在你這種情況下不適用。
我猜你是想輸出大批數(shù)據(jù),而不是根據(jù)索引選擇有數(shù)的那么幾條。
輸出數(shù)據(jù)占總數(shù)據(jù)量達(dá)到一定比例以后,再用索引就是浪費(fèi)更多資源而得不到回報(bào)了。
因?yàn)閿?shù)據(jù)行存儲(chǔ)在塊中。一塊存多行。用索引時(shí)是根據(jù)索引信息,每一行訪問一次數(shù)據(jù)塊。
數(shù)據(jù)多了會(huì)覆蓋大多數(shù)數(shù)據(jù)塊,并且一個(gè)數(shù)據(jù)塊會(huì)被訪問多次。就不如全表掃描一次,訪問一個(gè)數(shù)據(jù)塊就把該塊所有行都輸出。這樣效率最高。
所以你這種情況不應(yīng)該用索引的。
添加回答
舉報(bào)