資料庫刪除索引
1. db2資料庫表中系統自動生成的索引如何刪除
一般系統自帶生成的唯一索引,都是主鍵索引吧?
所以你要讓數據重復的話,看看是否主鍵?如果是的話,刪除主鍵就是了(一定要想好,這個主鍵是否不需要了)
2. 怎麼在資料庫中刪除已經添加的某個索引
刪除索引可以使用ALTER TABLE或DROP INDEX語句來實現,DROP INDEX可以在ALTER TABLE內部作為一條語句處理,其格式如下:
DROP INDEX index_nameONtalbe_name
ALTER TABLE table_name DROP INDEX index_name
ALTER TABLE table_name DROP PRIMARY KEY
註:其中,前兩條語句是等價的,刪除掉table_name中的索引index_name。
(2)資料庫刪除索引擴展閱讀:
索引的使用及注意事項
EXPLAIN可以幫助開發人員分析sql問題,explain顯示了mysql如何使用索引來處理select語句以及連接表,可以幫助選擇更好的索引和寫出更優化的查詢語句。
使用方法,在select語句前加上Explain就可以了:Explain select * from user where id=1;
盡量避免這些不走索引的sql:
SELECT `sname` FROM `stu` WHERE `age`+10=30;-- 不會使用索引,因為所有索引列參與了計算
SELECT `sname` FROM `stu` WHERE LEFT(`date`,4) <1990; -- 不會使用索引,因為使用了函數運算,原理與上面相同
SELECT * FROM `hounwang` WHERE `uname` LIKE'後盾%' 走索引
SELECT * FROM `hounwang` WHERE `uname` LIKE "%後盾%" 不走索引
正則表達式不使用索引,這應該很好理解,所以為什麼在SQL中很難看到regexp關鍵字的原因。
字元串與數字比較不使用索引;
CREATE TABLE `a` (`a` char(10));
EXPLAIN SELECT * FROM `a` WHERE `a`="1" 走索引
EXPLAIN SELECT * FROM `a` WHERE `a`=1 不走索引
3. informix資料庫怎麼刪除唯一索引的語句
informix直接刪除唯一索引的語法:
dropindex索引名;
可做如下測試:
1、創建表:
createtabletab_yzh_test_01
(
proct_iddecimal(20,0),
proct_novarchar(40),
cust_levelvarchar(10)
);
2、創建唯一索引:
createuniqueindexidx_tab_yzh_test_01_01ontab_yzh_test_01(proct_id);
3、刪除唯一索引:
dropindexidx_tab_yzh_test_01_01;
4. 資料庫索引有哪幾種怎樣建立索引
種類:
1、按照索引列值的唯一性,索引可分為唯一索引和非唯一索引;
非唯一索引:
create index 索引名 on 表名(列名) tablespace表空間名;
唯一索引:
建立主鍵或者唯一約束時會自動在對應的列上建立唯一索引;
2、索引列的個數:單列索引和復合索引;
3、按照索引列的物理組織方式。
索引的創建格式:
CREATEUNIUQE|BITMAPINDEX<schema>.<index_name>ON<schema>.<table_name>(<column_name>|<expression>ASC|DESC,<column_name>|<expression>ASC|DESC,...)TABLESPACE<tablespace_name>STORAGE<storage_settings>LOGGING||COMPRESS<nn>NOSORT|REVERSEPARTITION|GLOBALPARTITION<partition_setting>
使用USER_IND_COLUMNS查詢某個TABLE中的相應欄位索引建立情況
使用DBA_INDEXES/USER_INDEXES查詢所有索引的具體設置情況。
在Oracle中的索引可以分為:B樹索引、點陣圖索引、反向鍵索引、基於函數的索引、簇索引、全局索引、局部索引等,下面逐一講解:
一、B樹索引:
最常用的索引,各葉子節點中包括的數據有索引列的值和數據表中對應行的ROWID,簡單的說,在B樹索引中,是通過在索引中保存排過續的索引列值與相對應記錄的ROWID來實現快速查詢的目的。其邏輯結構如圖:
可以保證無論用戶要搜索哪個分支的葉子結點,都需要經過相同的索引層次,即都需要相同的I/O次數。
B樹索引的創建示例:
create index ind_t on t1(id);
注1:索引的針對欄位創建的,相同欄位不能創建一個以上的索引;
注2:默認的索引是不唯一的,但是也可以加上unique,表示該索引的欄位上沒有重復值(定義unique約束時會自動創建);
注3:創建主鍵時,默認在主鍵上創建了B樹索引,因此不能再在主鍵上創建索引。
二、點陣圖索引:
有些欄位中使用B樹索引的效率仍然不高,例如性別的欄位中,只有「男、女」兩個值,則即便使用了B樹索引,在進行檢索時也將返回接近一半的記錄。
所以當欄位的基數很低時,需要使用點陣圖索引。(「低」的標準是取值數量 < 行數*1%)
反向鍵索引是一種特殊的B樹索引,在存儲構造中與B樹索引完全相同,但是針對數值時,反向鍵索引會先反向每個鍵值的位元組,然後對反向後的新數據進行索引。例如輸入2008則轉換為8002,這樣當數值一次增加時,其反向鍵在大小中的分布仍然是比較平均的。
反向鍵索引的創建示例:
createindex ind_t on t1(id) reverse;
註:鍵的反轉由系統自行完成。對於用戶是透明的。
四、基於函數的索引:
有的時候,需要進行如下查詢:select * from t1 where to_char(date,'yyyy')>'2007';
但是即便在date欄位上建立了索引,還是不得不進行全表掃描。在這種情況下,可以使用基於函數的索引。其創建語法如下:
create index ind_t on t1(to_char(date,'yyyy'));
註:簡單來說,基於函數的索引,就是將查詢要用到的表達式作為索引項。
五、全局索引和局部索引:
這個索引貌似很復雜,其實很簡單。總得來說一句話,就是無論怎麼分區,都是為了方便管理。
具體索引和表的關系有三種:
1、局部分區索引:分區索引和分區表1對1
2、全局分區索引:分區索引和分區表N對N
3、全局非分區索引:非分區索引和分區表1對N
創建示例:
首先創建一個分區表
createtable student
(
stuno number(5),
sname vrvhar2(10),
deptno number(5)
)
partition by hash (deptno)
(
partition part_01 tablespace A1,
partition part_02 tablespace A2
);
創建局部分區索引(1v1):
create index ind_t on student(stuno)
local(
partition part_01 tablespace A2,
partition part_02 tablespace A1
);--local後面可以不加
創建全局分區索引(NvN):
create index ind_t on student(stuno)
globalpartition by range(stuno)
(
partition p1 values less than(1000) tablespace A1,
partition p2 values less than(maxvalue) tablespace A2
);--只可以進行range分區
創建全局非分區索引(1vN)
createindex ind_t on student(stuno) GLOBAL;
5. sql如何建立降序索引 和刪除索引
建立降序索引語法:
createindex索引名on表名(欄位名desc);
註:desc換成asc則是升序索引。
刪除索引語法:
dropindex索引名;
(5)資料庫刪除索引擴展閱讀:
索引的使用及注意事項
盡量避免這些不走索引的sql:
1、SELECT `sname` FROM `stu` WHERE `age`+10=30;不會使用索引,因為所有索引列參與了計算。
2、SELECT `sname` FROM `stu` WHERE LEFT(`date`,4) <1990; 不會使用索引,因為使用了函數運算,原理與上面相同。
3、SELECT * FROM `hounwang` WHERE `uname` LIKE'後盾%' 走索引。
4、SELECT * FROM `hounwang` WHERE `uname` LIKE "%後盾%"不走索引。
5、字元串與數字比較不使用索引;
CREATE TABLE `a` (`a` char(10));
EXPLAIN SELECT * FROM `a` WHERE `a`="1"走索引。
EXPLAIN SELECT * FROM `a` WHERE `a`=1 不走索引
參考資料:網路索引
6. sqlserver2014創建索引和刪除索引的方法
在使用sql
server資料庫系統的網友們都知道,一個好的資料庫系統裡面如果缺少索引,那麼這個資料庫就不算是一個完整的資料庫系統,因為資料庫系統是用來存放數據的,索引就像標簽一樣,用戶通過索引可以快速的找到自己想要的東西。接下來小編要講的兩個問題是,第一sql
server2014怎麼創建索引第二個是sqlserver2014刪除索引的方法。
sql
server2014怎麼創建索引:
ALTER
TABLE
`table_name`
ADD
INDEX
index_name
(
`column`
)
1、下面演示下user表的name欄位添加一個索引
2、主鍵索引
添加PRIMARY
KEY
ALTER
TABLE
`table_name`
ADD
PRIMARY
KEY
(
`column`
)
3、唯一索引
添加UNIQUE
ALTER
TABLE
`table_name`
ADD
UNIQUE
(
`column`
)
4、全文索引
添加FULLTEXT
ALTER
TABLE
`table_name`
ADD
FULLTEXT
(
`column`)
5、如何添加多列索引
ALTER
TABLE
`table_name`
ADD
INDEX
index_name
(
`column1`,
`column2`,
`column3`
)
sqlserver2014刪除索引方法:
可利用ALTER
TABLE或DROP
INDEX語句來刪除索引。類似於CREATE
INDEX語句,DROP
INDEX可以在ALTER
TABLE內部作為一條語句處理,語法如下。
DROP
INDEX
index_name
ON
talbe_name
ALTER
TABLE
table_name
DROP
INDEX
index_name
ALTER
TABLE
table_name
DROP
PRIMARY
KEY
其中,前兩條語句是等價的,刪除掉table_name中的索引index_name。
第3條語句只在刪除PRIMARY
KEY索引時使用,因為一個表只可能有一個PRIMARY
KEY索引,因此不需要指定索引名。如果沒有創建PRIMARY
KEY索引,但表具有一個或多個UNIQUE索引,則MySQL將刪除第一個UNIQUE索引。
如果從表中刪除了某列,則索引會受到影響。對於多列組合的索引,如果刪除其中的某列,則該列也會從索引中刪除。如果刪除組成索引的所有列,則整個索引將被刪除。
總結:如果有網友在用sql資料庫系統時,遇到索引之類的問題可以查看小編的教程希望可以給網友們提供有效幫助哈哈!!