當前位置:首頁 » 編程語言 » mysql添加索引sql語句
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

mysql添加索引sql語句

發布時間: 2022-12-20 08:07:41

Ⅰ Mysql中怎樣創建聚集索引和非聚集索引,求創建這兩種索引的SQL語句。謝謝

InnoDB按照主鍵進行聚集,如果沒有定義主鍵,InnoDB會試著使用唯一的非空索引來代替。如果沒有這種索引,InnoDB就會定義隱藏的主鍵然後在上面進行聚集。

所以,對於 聚集索引 來說,你創建主鍵的時候,自動就創建了主鍵的聚集索引。

而普通索引(非聚集索引)的語法,大多數資料庫都是通用的:

CREATE INDEX Syntax

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
[index_type]
ON tbl_name (index_col_name,...)
[index_type]

index_col_name:
col_name [(length)] [ASC | DESC]

index_type:
USING {BTREE | HASH | RTREE}

[java] view plain
-- 創建無索引的表格
create table testNoPK (
id int not null,
name varchar(10)
);
-- 創建普通索引
create index IDX_testNoPK_Name on testNoPK (name);

Ⅱ mysql資料庫怎麼創建索引

普通索引 添加INDEX

ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

下面演示下給user表的name欄位添加一個索引
mysql資料庫如何創建索引
mysql資料庫如何創建索引

主鍵索引 添加PRIMARY KEY

ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
mysql資料庫如何創建索引
mysql資料庫如何創建索引

唯一索引 添加UNIQUE

ALTER TABLE `table_name` ADD UNIQUE ( `column` )
mysql資料庫如何創建索引

全文索引 添加FULLTEXT

ALTER TABLE `table_name` ADD FULLTEXT ( `column`)
mysql資料庫如何創建索引

如何添加多列索引

ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
mysql資料庫如何創建索引

Ⅲ 怎麼MySql添加全文索引

使用索引是資料庫性能優化的必備技能之一。在MySQL資料庫中,有四種索引:聚集索引(主鍵索引)、普通索引、唯一索引以及我們這里將要介紹的全文索引(FULLTEXT INDEX)。
全文索引(也稱全文檢索)是目前搜索引擎使用的一種關鍵技術。它能夠利用「分詞技術「等多種演算法智能分析出文本文字中關鍵字詞的頻率及重要性,然後按照一定的演算法規則智能地篩選出我們想要的搜索結果。在這里,我們就不追根究底其底層實現原理了,現在我們來看看在MySQL中如何創建並使用全文索引。
在MySQL中,創建全文索引相對比較簡單。例如,我們有一個文章表(article),其中有主鍵ID(id)、文章標題(title)、文章內容(content)三個欄位。現在我們希望能夠在title和content兩個列上創建全文索引,article表及全文索引的創建SQL語句如下:
--創建article表

CREATE TABLE article (

id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,

title VARCHAR(200),

content TEXT,

FULLTEXT (title, content) --在title和content列上創建全文索引

);
上面就是在創建表的同時建立全文索引的SQL示例。此外,如果我們想要給已經存在的表的指定欄位創建全文索引,同樣以article表為例,我們可以使用如下SQL語句進行創建:
--給現有的article表的title和content欄位創建全文索引

--索引名稱為fulltext_article

ALTER TABLE article

ADD FULLTEXT INDEX fulltext_article (title, content)
在MySQL中創建全文索引之後,現在就該了解如何使用了。眾所周知,在資料庫中進行模糊查詢是使用LIKE關鍵字進行查詢,例如:
SELECT * FROM article WHERE content LIKE '%查詢字元串%'

那麼,我們使用全文索引也是這樣用的嗎?當然不是,我們必須使用特有的語法才能使用全文索引進行查詢。例如,我們想要在article表的title和content列中全文檢索指定的查詢字元串,可以如下編寫SQL語句:
SELECT * FROM article WHERE MATCH(title, content) AGAINST('查詢字元串')

強烈注意:MySQL自帶的全文索引只能用於資料庫引擎為MyISAM的數據表,如果是其他數據引擎,則全文索引不會生效。此外,MySQL自帶的全文索引只能對英文進行全文檢索,目前無法對中文進行全文檢索。如果需要對包含中文在內的文本數據進行全文檢索,我們需要採用Sphinx(斯芬克斯)/Coreseek技術來處理中文。本站將會在後續文章中對Sphinx以及Coreseek進行介紹。
備注1:目前,使用MySQL自帶的全文索引時,如果查詢字元串的長度過短將無法得到期望的搜索結果。MySQL全文索引所能找到的詞的默認最小長度為4個字元。另外,如果查詢的字元串包含停止詞,那麼該停止詞將會被忽略。
備注2:如果可能,請盡量先創建表並插入所有數據後再創建全文索引,而不要在創建表時就直接創建全文索引,因為前者比後者的全文索引效率要高。

Ⅳ 創建唯一索引的sql語句是什麼

創建唯一索引的sql語句如下:

  • CREATE [UNIQUE|CLUSTERED] INDEX INDEX_NAME ON TABLE_NAME(PROPERTY_NAME)

  • 其中UNIQUE和CLUSTERED為可選項,分別是建立唯一索引和聚簇索引。

  • 具體解釋為:
    UNIQUE:表示此索引的每一個索引值只對應唯一的數據。
    CLUSTERED:表示要建立的索引時聚簇索引,即索引項的順序與表中記錄的物理順序一致的索引組織。

Ⅳ mysql如何建立索引

我們可以通過查看索引的屬性來判斷創建索引的方法。
查看索引的語法格式如下:
SHOW INDEX FROM <表名> [ FROM <資料庫名>]
語法說明如下:
<表名>:指定需要查看索引的數據表名。
<資料庫名>:指定需要查看索引的數據表所在的資料庫,可省略。比如,SHOW INDEX FROM student FROM test; 語句表示查看 test 資料庫中 student 數據表的索引。
示例
使用 SHOW INDEX 語句查看《MySQL創建索引》一節中 tb_stu_info2 數據表的索引信息,SQL 語句和運行結果如下所示。
mysql> SHOW INDEX FROM tb_stu_info2\G
1. row
Table: tb_stu_info2
Non_unique: 0
Key_name: height
Seq_in_index: 1
Column_name: height
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
1 row in set (0.03 sec)
其中各主要參數說明如下:
參數 說明
Table 表示創建索引的數據表名,這里是 tb_stu_info2 數據表。
Non_unique 表示該索引是否是唯一索引。若不是唯一索引,則該列的值為 1;若是唯一索引,則該列的值為 0。
Key_name 表示索引的名稱。
Seq_in_index 表示該列在索引中的位置,如果索引是單列的,則該列的值為 1;如果索引是組合索引,則該列的值為每列在索引定義中的順序。
Column_name 表示定義索引的列欄位。
Collation 表示列以何種順序存儲在索引中。在 MySQL 中,升序顯示值「A」(升序),若顯示為 NULL,則表示無分類。
Cardinality 索引中唯一值數目的估計值。基數根據被存儲為整數的統計數據計數,所以即使對於小型表,該值也沒有必要是精確的。基數越大,當進行聯合時,MySQL 使用該索引的機會就越大。
Sub_part 表示列中被編入索引的字元的數量。若列只是部分被編入索引,則該列的值為被編入索引的字元的數目;若整列被編入索引,則該列的值為 NULL。
Packed 指示關鍵字如何被壓縮。若沒有被壓縮,值為 NULL。
Null 用於顯示索引列中是否包含 NULL。若列含有 NULL,該列的值為 YES。若沒有,則該列的值為 NO。
Index_type 顯示索引使用的類型和方法(BTREE、FULLTEXT、HASH、RTREE)。
Comment 顯示評注。

Ⅵ 如何創建mysql索引以及索引的優缺點

mysql教程:索引的使用以及索引的優缺點
1. 索引(index)是幫助MySQL高效獲取數據的數據結構。
它對於高性能非常關鍵,但人們通常會忘記或誤解它。
索引在數據越大的時候越重要。規模小、負載輕的資料庫即使沒有索引,也能有好的性能, 但是當數據增加的時候,性能就會下降很快。
Tip:蠕蟲復制,可以快速復制大量的數據
例:insert into emp select * from emp;
2. MySQL中常見的索引
◆普通索引 ◆唯一索引 ◆主鍵索引 ◆組合索引 ◆全文索引◆外鍵 (只有innodb存儲引擎才支持)
2.1普通索引:
這是最基本的索引,它沒有任何限制。有以下幾種創建方式:
有以下幾種創建方式:
◆創建索引
CREATE INDEX indexName ON tablename(username(length));
◆修改表結構
ALTER tablename ADD INDEX indexName (username(length))
Tip:length可以小於欄位實際長度;如果是BLOB 和 TEXT 類型,必須指定length ,下同
◆創建表的時候直接指定
CREATE TABLE mytableuuu( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX indexName (username(length)) );
CREATE TABLE mytable(id INT NOT NULL,username VARCHAR(16) NOT NULL);
create index index1 on mytable(id); //創建普通索引
◆刪掉索引:
drop index index1 on mytable;
有一個概念,
行定義:在聲明欄位(列)的時候定義的,比如primary key
表定義:在所有欄位(列)聲明完之後定義的,比如primary key,index
CREATE TABLE mytable(id INT NOT NULL,username VARCHAR(16) NOT NULL,index index1(username));
3.0唯一索引(unique)
索引列的值必須唯一,但允許有空值。
1)創建索引:Create UNIQUE INDEX indexName ON tableName(tableColumns(length))
2)修改表結構:Alter tableName ADD UNIQUE [indexName] ON (tableColumns(length)
3)創建表的時候直接指定:Create TABLE tableName ( [...], UNIQUE [indexName](tableColumns(length));
4.0主鍵索引(primary key)