談索引使用的誤區

2021-06-22 17:10:43 字數 544 閱讀 1829

主鍵就是聚集索引

這種想法筆者認為是極端錯誤的,是對聚集索引的一種浪費。雖然sql server預設是在主鍵上建立聚集索引的。

通常,我們會在每個表中都建立乙個id列,以區分每條資料,並且這個id列是自動增大的,步長一般為1。我們的這個辦公自動化的例項中的列gid就是如此。此時,如果我們將這個列設為主鍵,sql server會將此列缺省為聚集索引。這樣做有好處,就是可以讓您的資料在資料庫中按照id進行物理排序,但筆者認為這樣做意義不大。

顯而易見,聚集索引的優勢是很明顯的,而每個表中只能有乙個聚集索引的規則,這使得聚集索引變得更加珍貴。

從我們前面談到的聚集索引的定義我們可以看出,使用聚集索引的最大好處就是能夠根據查詢要求,迅速縮小查詢範圍,避免全表掃瞄。在實際應用中,因為id號是自動生成的,我們並不知道每條記錄的id號,所以我們很難在實踐中用id號來進行查詢。這就使讓id號這個主鍵作為聚集索引成為一種資源浪費。其次,讓每個id號都不同的字段作為聚集索引也不符合「大數目的不同值情況下不應建立聚合索引」規則;當然,這種情況只是針對使用者經常修改記錄內容,特別是索引項的時候會負作用,但對於查詢速度並沒有影響。

三 結合實際,談索引使用的誤區

理論的目的是應用。雖然我們剛才列出了何時應使用聚集索引或非聚集索引,但在實踐中以上規則卻很容易被忽視或不能根據實際情況進行綜合分析。下面我們將根據在實踐中遇到的實際問題來談一下索引使用的誤區,以便於大家掌握索引建立的方法。1 主鍵就是聚集索引 這種想法筆者認為是極端錯誤的,是對聚集索引的一種浪費。雖...

C Vector的使用誤區

初始化vector並傳引用到dll中,dll中為該引用新增節點,vector記憶體釋放時會報堆疊錯誤,原因?這個問題其實挺好避免的,說白了就是不要乙個模組new,另乙個模組delete,不要認為你的vector的節點資料在棧上,vector的本質就是乙個變長陣列,怎麼會在棧上呢,資料肯定是在堆上的,...

realloc的使用誤區

c語言 realloc 函式位於 stdlib.h 標頭檔案中,原型為 void realloc void ptr,size t size realloc 會將 ptr 所指向的記憶體塊的大小修改為 size,並將新的記憶體指標返回。設之前記憶體塊的大小為 n,如果 size n,那麼擷取的內容不會...