索引一般有幾種型別呢?
1樓:重慶新華電腦學校
索引分為有效索引和無效索引。
有效索引指引用棧內真實位置的索引;
即在 1 到棧頂之間的位置 (1 ≤ abs(index) ≤top)。 通常,乙個可能修改該位置的值的函式需要傳入有效索引。
中的函式若需要傳入棧索引,這個索引必須是 有效索引 或是 可接受索引。
除非另有說明, 任何可以接受有效索引的函式同時也接受 偽索引。 偽索引指代一些可以被 c code 訪問得到 lua 值,而它們又不在棧內。 這用於訪問登錄檔以及 c 函式的上值。
3.對於那些只是需要棧中的值(例如查詢函式)而不需要指定乙個棧位置的函式,可以用乙個可接受的索引去呼叫它們。 可接受索引 不僅可以是任何包括偽索引在內的有效索引, 還可以是任何超過棧頂但落在為棧分配出來的空間內的正索引。
注意 0 永遠都不是乙個可接受索引。) 除非另有說明,api 裡的函式都接受可接受索引。
允許可接受索引是為了避免對棧頂以外的查詢時做額外的檢查。 例如,c 函式可以直接查詢傳給它的第三個引數, 而不用先檢查是不是有第三個引數, 即不需要檢查 3 是不是乙個有效索引。
4.對於那些以可接受索引呼叫的函式,無效索引被看作包含了乙個虛擬型別 lua_tnone 的值, 這個值的行為和 nil 一致。
c 閉包。5.當 c 函式被建立出來, 我們有可能會把一些值關聯在一起, 也就是建立乙個 c 閉包 (參見 lua_pushcclosure); 這些被關聯起來的值被叫做 上值 , 它們可以在函式被呼叫的時候訪問的到。
6.無論何時去呼叫 c 函式, 函式的上值都可以用偽索引定位。
我們可以用 lua_upvalueindex 這個巨集來生成這些偽索引。 第乙個關聯到函式的值放在 lua_upvalueindex(1) 位置處,依此類推。 使用 lua_upvalueindex(n) 時, 若 n 大於當前函式的總上值個數 (但不可以大於 256)會產生乙個可接受的但無效的索引。
oracle中,索引是幹什麼用的?
2樓:
是一種常用的資料庫中的物件,是個特殊的資料結構,用來加速對資料的檢索。其實類似於圖書前面的目錄,你在一本書中找內容時會很耽誤時間,所以一般會先看目錄,找到感興趣的條目,而那個條目上是指明內容在那一頁的(內容所在的位址),然後就可以迅速找到需要的內容了。
索引就相當於這個目錄。
3樓:網友
索引是建立在表的一列或多個列上的輔助物件,目的是加快訪問表中的資料;oracle儲存索引的資料結構是b*樹,點陣圖索引也是如此,只不過是葉子節點不同b*數索引;索引由根節點、分支節點和葉子節點組成,上級索引塊包含下級索引塊的索引資料,葉節點包含索引資料和確定行實際位置的rowid。
使用索引的目的:
1、加快查詢速度。
2、減少i/o操作。
3、消除磁碟排序。
4、何時使用索引。
5、查詢返回的記錄數。
6、排序表<40%
7、非排序表 <7%
8、表的碎片較多(頻繁增加、刪除)
oracle資料庫索引種類,分別什麼情況下使用
4樓:
1. b-tree索引。
oracle資料庫中最常見的索引型別是b-tree索引,也就是b-樹索引,以其同名的計算科學結構命名。create
index語句時,預設就是在建立b-tree索引。沒有特別規定可用於任何情況。
2. 點陣圖索引(bitmap index)
點陣圖索引特定於該列只有幾個列舉值的情況,比如性別欄位,標示欄位比如只有0和1的情況。
3. 基於函式的索引。
比如經常對某個欄位做查詢的時候是帶函式操作的,那麼此時建乙個函式索引就有價值了。
4. 分割槽索引和全域性索引。
這2個是用於分割槽表的時候。前者是分割槽內索引,後者是全表索引。
5. 反向索引(reverse)
這個索引不常見,但是特定情況特別有效,比如乙個varchar(5)位欄位(員工編號)含值。
這種情況預設索引分佈過於密集,不能利用好伺服器的並行。
但是反向之後10001,20001,33001,50001,61001就有了乙個很好的分佈,能高效的利用好並行運算。
索引hash索引可能是訪問資料庫中資料的最快方法,但它也有自身的缺點。叢集鍵上不同值的數目必須在建立hash叢集之前就要知道。需要在建立hash叢集的時候指定這個值。
使用hash索引必須要使用hash叢集。
5樓:一顆星
oracle資料庫常見的索引種類有:b樹索引、點陣圖索引、反向鍵索引、基於函式的索引、
b樹索引:如果表包含的資料非常多,並且經常在where子句中引用某列或某幾列,則應該基於該列或這幾個列建立b樹索引;
點陣圖索引:當列的基數很低的時,當乙個列的基數小於1%時,適用於點陣圖索引;
反向索引:如果使用者使用序列在表中輸入記錄,則反向鍵索引首先指向每個列鍵值的位元組,然後在反向後的新資料上進行索引;但進行反向鍵索引時卻是非遞增的,這意味如果將其新增到子葉節點,可能會在任意的子葉節點中進行。
基於函式的索引:當資料庫中遇到對字元大小寫很敏感,如果使用者不能確定輸入資料的格式,甚至會產生乙個嚴重的錯誤;這時候建立基於函式的索引就比較合適了;
sql索引分為幾類?
6樓:網友
sql server中索引型別包括的三種型別分別是唯一索引(unique),聚集索引(clustered) ,非聚集索引(nonclustered)。
主鍵與唯一索引的區別。
主鍵是一種約束,唯一索引是一種索引,兩者在本質上是不同的。 主鍵建立後一定包含乙個唯一性索引,唯一性索引並不一定就是主鍵。 唯一性索引列允許空值,而主鍵列不允許為空值。
主鍵列在建立時,已經預設為空值 + 唯一索引了。
主鍵可以被其他表引用為外來鍵,而唯一索引不能。 乙個表最多隻能建立乙個主鍵,但可以建立多個唯一索引。 主鍵更適合那些不容易更改的唯一標識,如自動遞增列、身份證號等。
在 rbo 模式下,主鍵的執行計劃優先順序要高於唯一索引。 兩者可以提高查詢的速度。
7樓:sql的藝術
不同資料庫中提供了不同的索引型別,sqlserver中的索引有兩種:聚集索引(clustered)和非聚集索引(nonclustered)。
索引區別:聚集索引:
聚集索引基於資料行的鍵值,在表內排序和儲存這些資料行。每個表只能有乙個聚集索引,應為資料行本分只能按乙個順序儲存。
在聚集索引中,表中各行的物理順序與索引鍵值的邏輯(索引)順序相同。聚集索引通常可加快update和delete操作的速度,因為這兩個操作需要讀取大量的資料。建立或修改聚集索引可能要花很長時間,因為執行這兩個操作時要在磁碟上對錶的行進行重組。
非聚集索引:
因為乙個表中只能有乙個聚集索引,如果需要在表中建立多個索引,則可以建立為非聚集索引。表中的資料並不按照非聚集索引列的順序儲存,但非聚集索引的索引行中儲存了非聚集鍵值和行定位器,可以快捷地根據非聚集鍵的值來定位記錄的儲存位置。
延伸閱讀:無論是聚集索引,還是非聚集索引,都可以是唯一索引(unique)
在sql server中,當唯一性是資料本身的特點時,可建立唯一索引,但索引列的組合不同於表的主鍵。例如,如果要頻繁查詢表a(該表主鍵為列a_id)的列a_name,而且要保證姓名是唯一的,則在列a_name上建立唯一索引。
如果使用者為多個員工輸入了相同的姓名,則資料庫顯示錯誤,並且不能儲存該表。
oracle資料庫中的最常用的索引有哪些
8樓:一顆星
按照索引資料的儲存方式可以將索引分為:b樹索引、點陣圖索引、反向鍵索引和基於函式的索引。
按照索引列的唯一性可以分為:唯一索引和非唯一索引。
按照索引列的個數可以分為:單列索引 和複合索引。
oracle中有哪些資料型別,ORACLE中有哪些資料型別!
我tm不管 varchar2 size 可變長度的字串,其最大長度為size個位元組 size的最大值是4000,而最小值是1 你必須指定乙個varchar2的size nvarchar2 size 可變長度的字串,依據所選的國家字符集,其最大長度為size個字元或位元組 size的最大值取決於儲存...
生活中有多少種貓最常見,生活中有多少種貓最常見
專門養貓的一般都是貓舍里拿來賣的純種貓 那就多了,比如金吉拉,暹羅,波斯,異短,美短,藍貓而大街上或者人家家裡能看到的,有條紋的大多是中國狸,分黑狸,黃狸還有就是國畫裡那種那樣的是三花貓,全白的是山東獅子貓,也有人叫波斯貓 家貓 短毛貓 波斯貓等比較常見 貓最常見的品種?常見的貓品種主要有英國短毛貓...
汽車有幾個型別,汽車型別有多少種?
江西萬通汽車培訓學院 汽車的分類 關於汽車的分類,可依據不同的標準來劃分,有按用途來劃分的,有按功能來劃分的,有按豪華性來劃分的等等,不一而足。下面,我就一一道來。1,按用途來分類 可分為以下7種 轎車指乘坐2至8人的小型載客車輛。根據發動機排量大小 l升,1.6升,2.5升,4升 可分為微型,普通...