bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

mysql索引怎么創(chuàng)建的,mysql索引怎么建立

mysql創(chuàng)建索引的三種辦法

一、CREATE INDEX方法

十年的七臺河網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。網(wǎng)絡(luò)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整七臺河建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“七臺河網(wǎng)站設(shè)計”,“七臺河網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。

CREATE INDEX 索引名 ON 表名 (列名 [長度] [ ASC | DESC])

限制:只能增加普通索引INDEX和UNIQUE INDEX索引這兩種;不能創(chuàng)建PRIMARY KEY索引

二、ALTER TABLE方法

ALTER TABLE 表名 ADD INDEX [索引名] (列名,…)

ALTER TABLE 表名 ADD UNIQUE [ INDEX | KEY] [索引名] (列名,…)

ALTER TABLE 表名 ADD PRIMARY KEY (列名,…)

ALTER TABLE 表名 ADD FOREIGN KEY [索引名] (列名,…)

三、CREATE TABLE時候指定

創(chuàng)建一般索引

CREATE TABLE tb_stu_info

(

id INT NOT NULL,

name CHAR(45) DEFAULT NULL,

dept_id INT DEFAULT NULL,

age INT DEFAULT NULL,

height INT DEFAULT NULL,

INDEX(height)

);

創(chuàng)建唯一索引

mysql CREATE TABLE tb_stu_info2

(

id INT NOT NULL,

name CHAR(45) DEFAULT NULL,

dept_id INT DEFAULT NULL,

age INT DEFAULT NULL,

height INT DEFAULT NULL,

UNIQUE INDEX(height)

);

創(chuàng)建主鍵(雖然ALTER TABLE也能創(chuàng)建,但主鍵一般都在創(chuàng)表時建立)

CREATE TABLE mytable(

ID INT NOT NULL,

username VARCHAR(16) NOT NULL,

PRIMARY KEY(ID)

);

mysql如何建立索引

我們可以通過查看索引的屬性來判斷創(chuàng)建索引的方法。

查看索引的語法格式如下:

SHOW INDEX FROM 表名 [ FROM 數(shù)據(jù)庫名]

語法說明如下:

表名:指定需要查看索引的數(shù)據(jù)表名。

數(shù)據(jù)庫名:指定需要查看索引的數(shù)據(jù)表所在的數(shù)據(jù)庫,可省略。比如,SHOW INDEX FROM student FROM test; 語句表示查看 test 數(shù)據(jù)庫中 student 數(shù)據(jù)表的索引。

示例

使用 SHOW INDEX 語句查看《MySQL創(chuàng)建索引》一節(jié)中 tb_stu_info2 數(shù)據(jù)表的索引信息,SQL 語句和運行結(jié)果如下所示。

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)

其中各主要參數(shù)說明如下:

參數(shù) 說明

Table 表示創(chuàng)建索引的數(shù)據(jù)表名,這里是 tb_stu_info2 數(shù)據(jù)表。

Non_unique 表示該索引是否是唯一索引。若不是唯一索引,則該列的值為 1;若是唯一索引,則該列的值為 0。

Key_name 表示索引的名稱。

Seq_in_index 表示該列在索引中的位置,如果索引是單列的,則該列的值為 1;如果索引是組合索引,則該列的值為每列在索引定義中的順序。

Column_name 表示定義索引的列字段。

Collation 表示列以何種順序存儲在索引中。在 MySQL 中,升序顯示值“A”(升序),若顯示為 NULL,則表示無分類。

Cardinality 索引中唯一值數(shù)目的估計值。基數(shù)根據(jù)被存儲為整數(shù)的統(tǒng)計數(shù)據(jù)計數(shù),所以即使對于小型表,該值也沒有必要是精確的。基數(shù)越大,當(dāng)進(jìn)行聯(lián)合時,MySQL 使用該索引的機會就越大。

Sub_part 表示列中被編入索引的字符的數(shù)量。若列只是部分被編入索引,則該列的值為被編入索引的字符的數(shù)目;若整列被編入索引,則該列的值為 NULL。

Packed 指示關(guān)鍵字如何被壓縮。若沒有被壓縮,值為 NULL。

Null 用于顯示索引列中是否包含 NULL。若列含有 NULL,該列的值為 YES。若沒有,則該列的值為 NO。

Index_type 顯示索引使用的類型和方法(BTREE、FULLTEXT、HASH、RTREE)。

Comment 顯示評注。

Mysql建立索引經(jīng)驗

在實際開發(fā)中使用數(shù)據(jù)庫時,難免會遇到一些大表數(shù)據(jù),對這些數(shù)據(jù)進(jìn)行查詢時,有時候SQL會查詢得特別慢,這時候,有經(jīng)驗的老師傅會告訴你,你看一下哪幾個字段查的多,加一個索引就好了。

那么,怎么合理地建立索引呢?這里分享一下我的一些經(jīng)驗,如有不妥之處,歡迎批評指正。

1、不要盲目建立索引 , 先分析再創(chuàng)建

索引雖然能大幅度提升我們的查詢性能,但也要知道,在你進(jìn)行增刪改時,索引樹也要同樣地進(jìn)行維護(hù)。所以,索引不是越多越好,而是按需建立。最好是在一整塊模塊開發(fā)完成后,分析一下,去針對大多數(shù)的查詢,建立聯(lián)合索引。

2、使用聯(lián)合索引盡量覆蓋多的條件

這是說在一個慢sql里假如有五個where ,一個 order by ,那么我們的聯(lián)合索引盡量覆蓋到這五個查詢條件,如果有必要,order by 也覆蓋上 。

3、小基數(shù)字段不需要索引

這個意思是,如果一張表里某個字段的值只有那么幾個,那么你針對這個字段建立的索引其實沒什么意義,比如說,一個性別字段就兩種結(jié)果,你建了索引,排序也沒什么意思(也就是索引里把男女給分開了)

所以說,索引盡量選擇基數(shù)大的數(shù)據(jù)去建立,能最大化地利用索引

4、長字符串可以使用前綴索引

我們建立索引的字段盡量選擇字段類型較小的,比如一個varchar(20)和varchar(256)的,我們在20的上面建立的索引和在256上就有明顯的差距(字符串那么長排序也不好排呀,唉)。

當(dāng)然,如果一定是要對varchar(256)建立索引,我們可以選擇里面的前20個字符放在索引樹里(這里的20不絕對,選擇能盡量分辨數(shù)據(jù)的最小字符字段設(shè)計),類似這樣KEY index(name(20),age,job) ,索引只會對name的前20個字符進(jìn)行搜索,但前綴索引無法適用于order by 和 group by。

5、對排序字段設(shè)計索引的優(yōu)先級低

如果一個SQL里我們出現(xiàn)了范圍查找,后邊又跟著一個排序字段,那么我們優(yōu)先給范圍查找的字段設(shè)置索引,而不是優(yōu)先排序。

6、如果出現(xiàn)慢SQL,可以設(shè)計一個只針對該條SQL的聯(lián)合索引。

不過慢SQL的優(yōu)化,需要一步步去進(jìn)行分析,可以先用explain查看SQL語句的分析結(jié)果,再針對結(jié)果去做相應(yīng)的改進(jìn)。explain的東西我們下次再講。

PS:在 select 語句之前增加 explain 關(guān)鍵字,MySQL 會在查詢上設(shè)置一個標(biāo)記,執(zhí)行查詢會返回執(zhí)行計劃的信息,而不是 執(zhí)行這條SQL。

mysql怎么創(chuàng)建索引

1.添加PRIMARY KEY(主鍵索引)

mysqlALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )

2.添加UNIQUE(唯一索引)

mysqlALTER TABLE `table_name` ADD UNIQUE (

`column`

)

3.添加INDEX(普通索引)

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

4.添加FULLTEXT(全文索引)

mysqlALTER TABLE `table_name` ADD FULLTEXT ( `column`)

5.添加多列索引

mysqlALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

下面是更加詳細(xì)的方法

MySQL中可以使用alter table這個SQL語句來為表中的字段添加索引。

使用alter table語句來為表中的字段添加索引的基本語法是:

ALTER TABLE 表名 ADD INDEX (字段);

我們來嘗試為test中t_name字段添加一個索引。

mysql alter table test add index(t_name);

Query OK, 0 rows affected (0.17 sec)

Records: 0 Duplicates: 0 Warnings: 0

執(zhí)行成功后,我們來看看結(jié)果。

mysql describe test;

+------------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+------------+-------------+------+-----+---------+-------+

| t_id | int(11) | YES | | NULL | |

| t_name | varchar(50) | NO | MUL | NULL | |

| t_password | char(32) | YES | | NULL | |

| t_birth | date | YES | | NULL | |

+------------+-------------+------+-----+---------+-------+

4 rows in set (0.00 sec)

結(jié)果可以看出,t_name字段的Key這一欄由原來的空白變成了MUL。這個MUL是什么意思呢?簡單解釋一下:如果Key是MUL,那么該列的值可以重復(fù),該列是一個非唯一索引的前導(dǎo)列(第一列)或者是一個唯一性索引的組成部分但是可以含有空值NULL。

本文標(biāo)題:mysql索引怎么創(chuàng)建的,mysql索引怎么建立
瀏覽地址:http://vcdvsql.cn/article30/heceso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)云服務(wù)器外貿(mào)網(wǎng)站建設(shè)定制開發(fā)域名注冊企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營