欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

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

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

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

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于網(wǎng)站建設、成都網(wǎng)站設計、淄博網(wǎng)絡推廣、小程序制作、淄博網(wǎng)絡營銷、淄博企業(yè)策劃、淄博品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學生創(chuàng)業(yè)者提供淄博建站搭建服務,24小時服務熱線:18980820575,官方網(wǎng)址:chinadenli.net

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

一、CREATE INDEX方法

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)建lower索引

mysql創(chuàng)建lower索引的方法:

1、自動創(chuàng)建。在表中定義一個primarykey或者unique時,MySQL數(shù)據(jù)庫會自動創(chuàng)建一個對應的主鍵索引或者是唯一索引。

2、手動創(chuàng)建。在創(chuàng)建表的時候創(chuàng)建索引,即可給已經(jīng)有的表創(chuàng)建索引。

mysql聯(lián)合索引如何創(chuàng)建?

CREATE TABLE `test` ('aaa' varchar(16) NOT NULL default '', 'bbb' varchar(16) NOT NULL default '', 'ccc' int(11) UNSIGNED NOT NULL default 0, KEY `sindex` (`aaa`,`bbb`,`ccc`) ) ENGINE=MyISAM COMMENT='';\x0d\x0a\x0d\x0a這樣就在 aaa、bbb、ccc 3列上建立聯(lián)合索引了。\x0d\x0a\x0d\x0a如果表已經(jīng)建好了,那么就在phpmyadmin里面執(zhí)行:\x0d\x0aalert table test add INDEX `sindex` (`aaa`,`bbb`,`ccc`) \x0d\x0a\x0d\x0a就可以在這3列上建立聯(lián)合索引了。

分享標題:mysql怎么建立索引 mysql如何創(chuàng)建索引
網(wǎng)站網(wǎng)址:http://chinadenli.net/article0/ddihooo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供ChatGPT用戶體驗動態(tài)網(wǎng)站做網(wǎng)站App開發(fā)網(wǎng)站制作

廣告

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

成都定制網(wǎng)站建設