中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

河南省建設(shè)人才信息網(wǎng)官網(wǎng)自助優(yōu)化排名工具

河南省建設(shè)人才信息網(wǎng)官網(wǎng),自助優(yōu)化排名工具,網(wǎng)站內(nèi)容收錄,打開(kāi)有些網(wǎng)站顯示建設(shè)中MySQL 實(shí)驗(yàn) 7:索引的操作 索引是對(duì)數(shù)據(jù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu),索引可以大大提高 MySQL 的檢索速度。合理使用索引,可以大大提升 SQL 查詢(xún)的性能。 索引好比是一本書(shū)前面的目錄,假如我們需要從書(shū)籍查找與 xx 相關(guān)…

MySQL 實(shí)驗(yàn) 7:索引的操作

索引是對(duì)數(shù)據(jù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu),索引可以大大提高 MySQL 的檢索速度。合理使用索引,可以大大提升 SQL 查詢(xún)的性能。

索引好比是一本書(shū)前面的目錄,假如我們需要從書(shū)籍查找與 xx 相關(guān)的內(nèi)容,我們可以從目錄中查找,定位到 xx 內(nèi)容所在頁(yè)面,如果沒(méi)有設(shè)置目錄(索引),則只能逐字逐頁(yè)閱讀文本查找。

當(dāng)執(zhí)行查詢(xún)操作時(shí),如果不使用索引,MySQL 必須從第一條記錄開(kāi)始讀完整個(gè)表,直到找出相關(guān)的行。如果表中查詢(xún)的列有一個(gè)索引,MySQL 能夠快速到達(dá)一個(gè)位置去搜索數(shù)據(jù)文件,而不必查看所有數(shù)據(jù)。

一、索引的優(yōu)缺點(diǎn)

索引雖然可以提高檢索的速度,但創(chuàng)建過(guò)多的、不必要的索引還會(huì)影響數(shù)據(jù)增、刪、改的效率。

1、索引的優(yōu)點(diǎn)

(1)索引大大減小了服務(wù)器需要掃描的數(shù)據(jù)量,從而大大加快數(shù)據(jù)的檢索速度,這也是創(chuàng)建索引的最主要的原因。

(2)通過(guò)創(chuàng)建唯一性索引,可以保證數(shù)據(jù)庫(kù)表中每一行數(shù)據(jù)的唯一性。

(3)可以加速表和表之間的連接。

(4)在使用分組和排序子句進(jìn)行數(shù)據(jù)檢索時(shí),可以減少查詢(xún)中分組和排序的時(shí)間。

2、索引的缺點(diǎn)

(1)創(chuàng)建索引和維護(hù)索引要耗費(fèi)時(shí)間,這種時(shí)間隨著數(shù)據(jù)量的增加而增加。

(2)索引需要占物理空間,除了數(shù)據(jù)表占用數(shù)據(jù)空間之外,每一個(gè)索引還要占用一定的物理空間,如果需要建立聚簇索引,那么需要占用的空間會(huì)更大。

(3)對(duì)表中的數(shù)據(jù)進(jìn)行增、刪、改的時(shí)候,索引也要?jiǎng)討B(tài)的維護(hù),降低了數(shù)據(jù)的維護(hù)速度。

3、創(chuàng)建索引的原則

(1)在經(jīng)常需要檢索的列上創(chuàng)建索引可以加快檢索的速度。

(2)在作為主鍵的列上創(chuàng)建聚簇索引可以保證該列的唯一性和組織表中數(shù)據(jù)的排列順序。

(3)在經(jīng)常用在連接的列上,一般是表中的外鍵創(chuàng)建索引,可以提高連接的速度。

(4)在經(jīng)常需要根據(jù)范圍(<,<=,=,>,>=,BETWEEN,IN)進(jìn)行搜索的列上創(chuàng)建索引。

(4)在經(jīng)常需要排序(order by)的列上創(chuàng)建索引,因?yàn)樗饕呀?jīng)排序,這樣查詢(xún)可以利用索引的排序,加快排序查詢(xún)時(shí)間。

(5)在經(jīng)常使用在 WHERE 子句中的列上面創(chuàng)建索引,可以加快條件的判斷速度。

(6)對(duì)于那些在查詢(xún)中很少使用的列不應(yīng)該創(chuàng)建索引。

(7)對(duì)于那些重復(fù)值過(guò)多的列也不應(yīng)該增加索引。

(8)經(jīng)常進(jìn)行數(shù)據(jù)更新的列不應(yīng)該創(chuàng)建索引。

二、索引的分類(lèi)

MySQL 的索引有兩種分類(lèi)方式:邏輯分類(lèi)和物理分類(lèi)。

1、邏輯分類(lèi)

(1)按功能劃分索引可以分為四類(lèi):主鍵索引、唯一索引、普通索引和全文索引。

主鍵索引:主鍵索引默認(rèn)創(chuàng)建為聚簇索引,主鍵索引會(huì)改變表中記錄的物理順序。一張表只能創(chuàng)建一個(gè)主鍵索引,主鍵索引所包含的列不允許重復(fù)、不允許為 NULL。

唯一索引:唯一索引包含的數(shù)據(jù)列不允許取重復(fù)值,但允許為 NULL 值。一張表可以創(chuàng)建多個(gè)唯一索引,索引列的值必須唯一,如果是組合索引,則唯一索引包含的所有列的組合必須取值唯一。

普通索引:一張表可以創(chuàng)建多個(gè)普通索引,普通索引允許數(shù)據(jù)重復(fù),索引所包含的列允許取 NULL 值。

全文索引:查找文本中的關(guān)鍵詞,主要用于全文檢索。

(2)按索引包含的列數(shù)可以分為兩類(lèi):單列索引和多列索引(又叫組合索引)。

單例索引:一個(gè)索引只包含一個(gè)列,一個(gè)表可以有多個(gè)單例索引。

組合索引:一個(gè)組合索引包含兩個(gè)或兩個(gè)以上的列。查詢(xún)時(shí)遵循組合索引的【最左前綴】原則,即使用 where 時(shí)條件要按照建立索引的時(shí)候字段的排列方式放置索引才會(huì)生效。

2、物理分類(lèi)

按索引的存儲(chǔ)結(jié)構(gòu)劃分,可以把索引分為聚簇索引(也叫聚集索引)和非聚簇索引。

(1)聚簇索引:聚簇索引(clustered index)不是單獨(dú)的一種索引類(lèi)型,而是一種數(shù)據(jù)存儲(chǔ)方式,每張表最多只能擁有一個(gè)聚簇索引。表中的數(shù)據(jù)其實(shí)就是按照聚簇索引的順序進(jìn)行排列。因此:按照聚簇索引查詢(xún)速度更快。

(2)非聚簇索引:聚簇索引之外的索引稱(chēng)之為非聚簇索引,又稱(chēng)為輔助索引。查找數(shù)據(jù)時(shí)首先通過(guò)非聚簇索引找到主鍵值,然后到主鍵索引樹(shù)中通過(guò)主鍵值找到數(shù)據(jù)行。

三、創(chuàng)建表的同時(shí)創(chuàng)建索引

(1)主鍵索引和唯一索引的創(chuàng)建請(qǐng)參見(jiàn)【MySQL 實(shí)驗(yàn)6:定義數(shù)據(jù)的完整性】。

(2)創(chuàng)建普通索引:可以使用關(guān)鍵字 key 或 index 創(chuàng)建普通索引。語(yǔ)法格式如下:

create table table_name(col_name data_type primary key,col_name data_type,... ,col_name data_type,INDEX|KEY [索引名] (列名[(長(zhǎng)度)] , ...)
);
-- 說(shuō)明:1)索引名:給創(chuàng)建的索引取一個(gè)新名稱(chēng)。如果不指定則采用字段名作為索引名。
(2)列名:指定索引對(duì)應(yīng)的列的名稱(chēng)。列名可以有多個(gè),即創(chuàng)建多列索引。
(3)長(zhǎng)度:指索引的長(zhǎng)度,字符串類(lèi)型才可以使用。
(4)可以根據(jù)表達(dá)式創(chuàng)建索引。

例如:

create table emp02(e_id int primary key,e_name char(20),birth date,salary decimal(10,2),phone char(20),address varchar(200),dept_name char(30),key(e_name),                               -- 不指定索引名稱(chēng)index idx_salary(salary),                  -- 指定索引名稱(chēng)index idx_dept_salary(dept_name,salary),   -- 指定多列索引key idx_phone(phone(11))                   -- 指定索引長(zhǎng)度
);-- 查看表結(jié)構(gòu)
mysql> desc emp02;
+-----------+---------------+------+-----+---------+-------+
| Field     | Type          | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+-------+
| e_id      | int(11)       | NO   | PRI | NULL    |       |
| e_name    | char(20)      | YES  | MUL | NULL    |       |
| birth     | date          | YES  |     | NULL    |       |
| salary    | decimal(10,2) | YES  | MUL | NULL    |       |
| phone     | char(20)      | YES  | MUL | NULL    |       |
| address   | varchar(200)  | YES  |     | NULL    |       |
| dept_name | char(30)      | YES  | MUL | NULL    |       |
+-----------+---------------+------+-----+---------+-------+
7 rows in set (0.00 sec)-- 查看索引
mysql> show create table emp02\G
*************************** 1. row ***************************Table: emp02
Create Table: CREATE TABLE `emp02` (`e_id` int(11) NOT NULL,`e_name` char(20) DEFAULT NULL,`birth` date DEFAULT NULL,`salary` decimal(10,2) DEFAULT NULL,`phone` char(20) DEFAULT NULL,`address` varchar(200) DEFAULT NULL,`dept_name` char(30) DEFAULT NULL,PRIMARY KEY (`e_id`),KEY `e_name` (`e_name`),KEY `idx_salary` (`salary`),KEY `idx_dept_salary` (`dept_name`,`salary`),KEY `idx_phone` (`phone`(11))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

00試環(huán)境進(jìn)行據(jù)庫(kù)

create table emp02(e_id int primary key,e_name char(20),birth date,salary decimal(10,2),phone char(20),address varchar(200),dept_name char(30),key(e_name),                               -- 不指定索引名稱(chēng)index idx_salary(salary),                  -- 指定索引名稱(chēng)index idx_dept_salary(dept_name,salary),   -- 指定多列索引key idx_phone(phone(11)) 
);

四、添加索引

數(shù)據(jù)表創(chuàng)建完成后可以使用 alter table 或 create index 命令添加所需的索引。

1、使用 alter table 添加索引

語(yǔ)法格式如下:

ALTER TABLE 表名 
ADD INDEX|KEY [索引名](字段名[(長(zhǎng)度)], ...);

例如:

create table emp03(e_id int primary key,e_name char(20),birth date,salary decimal(10,2),phone char(20),address varchar(200),dept_name char(30)
);-- 添加索引,不指定索引名
alter table emp03 add index(e_name);-- 添加索引,指定索引名
alter table emp03 add index idx_salary(salary);-- 添加多列索引,指定索引名
alter table emp03 add index idx_dept_salary(dept_name, salary);-- 添加索引,指定長(zhǎng)度
alter table emp03 add index idx_phone(phone(11));-- 查看表結(jié)構(gòu)
mysql> desc emp03;
+-----------+---------------+------+-----+---------+-------+
| Field     | Type          | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+-------+
| e_id      | int(11)       | NO   | PRI | NULL    |       |
| e_name    | char(20)      | YES  | MUL | NULL    |       |
| birth     | date          | YES  |     | NULL    |       |
| salary    | decimal(10,2) | YES  | MUL | NULL    |       |
| phone     | char(20)      | YES  | MUL | NULL    |       |
| address   | varchar(200)  | YES  |     | NULL    |       |
| dept_name | char(30)      | YES  | MUL | NULL    |       |
+-----------+---------------+------+-----+---------+-------+
7 rows in set (0.01 sec)-- 查看索引
mysql> show create table emp03\G
*************************** 1. row ***************************Table: emp03
Create Table: CREATE TABLE `emp03` (`e_id` int(11) NOT NULL,`e_name` char(20) DEFAULT NULL,`birth` date DEFAULT NULL,`salary` decimal(10,2) DEFAULT NULL,`phone` char(20) DEFAULT NULL,`address` varchar(200) DEFAULT NULL,`dept_name` char(30) DEFAULT NULL,PRIMARY KEY (`e_id`),KEY `e_name` (`e_name`),KEY `idx_salary` (`salary`),KEY `idx_dept_salary` (`dept_name`,`salary`),KEY `idx_phone` (`phone`(11))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
2、使用 create index 添加索引

語(yǔ)法格式如下:

CREATE INDEX 索引名 ON 表名(字段名[(長(zhǎng)度)], ...);

例如:

create table emp04(e_id int primary key,e_name char(20),birth date,salary decimal(10,2),phone char(20),address varchar(200),dept_name char(30)
);-- 添加單列索引
create index idx_name on emp04(e_name);-- 添加多列索引
create index idx_dept_salary on emp04(dept_name,salary);-- 指定索引長(zhǎng)度
create index idx_phone on emp04(phone(11));-- 查看表結(jié)構(gòu)
mysql> desc emp04;
+-----------+---------------+------+-----+---------+-------+
| Field     | Type          | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+-------+
| e_id      | int(11)       | NO   | PRI | NULL    |       |
| e_name    | char(20)      | YES  | MUL | NULL    |       |
| birth     | date          | YES  |     | NULL    |       |
| salary    | decimal(10,2) | YES  |     | NULL    |       |
| phone     | char(20)      | YES  | MUL | NULL    |       |
| address   | varchar(200)  | YES  |     | NULL    |       |
| dept_name | char(30)      | YES  | MUL | NULL    |       |
+-----------+---------------+------+-----+---------+-------+
7 rows in set (0.01 sec)-- 查看索引
mysql> show create table emp04\G
*************************** 1. row ***************************Table: emp04
Create Table: CREATE TABLE `emp04` (`e_id` int(11) NOT NULL,`e_name` char(20) DEFAULT NULL,`birth` date DEFAULT NULL,`salary` decimal(10,2) DEFAULT NULL,`phone` char(20) DEFAULT NULL,`address` varchar(200) DEFAULT NULL,`dept_name` char(30) DEFAULT NULL,PRIMARY KEY (`e_id`),KEY `idx_name` (`e_name`),KEY `idx_dept_salary` (`dept_name`,`salary`),KEY `idx_phone` (`phone`(11))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

五、刪除索引

刪除索引的語(yǔ)法格式如下:

-- 使用 alter table 命令刪除索引
LTER TABLE 表名 DROP INDEX 索引名;
-- 使用 drop index 命令刪除索引
DROP INDEX 索引名 ON 表名;

例如:

-- 查看 emp03 表中的索引
mysql> show create table emp03\G
*************************** 1. row ***************************Table: emp03
Create Table: CREATE TABLE `emp03` (`e_id` int(11) NOT NULL,`e_name` char(20) DEFAULT NULL,`birth` date DEFAULT NULL,`salary` decimal(10,2) DEFAULT NULL,`phone` char(20) DEFAULT NULL,`address` varchar(200) DEFAULT NULL,`dept_name` char(30) DEFAULT NULL,PRIMARY KEY (`e_id`),KEY `e_name` (`e_name`),KEY `idx_salary` (`salary`),KEY `idx_dept_salary` (`dept_name`,`salary`),KEY `idx_phone` (`phone`(11))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)-- 刪除索引:e_name
alter table emp03 drop index e_name;-- 刪除索引:idx_salary
drop index idx_salary on emp03;-- 重新查看 emp03 表中的索引
mysql> show create table emp03\G
*************************** 1. row ***************************Table: emp03
Create Table: CREATE TABLE `emp03` (`e_id` int(11) NOT NULL,`e_name` char(20) DEFAULT NULL,`birth` date DEFAULT NULL,`salary` decimal(10,2) DEFAULT NULL,`phone` char(20) DEFAULT NULL,`address` varchar(200) DEFAULT NULL,`dept_name` char(30) DEFAULT NULL,PRIMARY KEY (`e_id`),KEY `idx_dept_salary` (`dept_name`,`salary`),KEY `idx_phone` (`phone`(11))
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
http://m.risenshineclean.com/news/61750.html

相關(guān)文章:

  • 編程軟件自學(xué)網(wǎng)百度關(guān)鍵詞自然排名優(yōu)化公司
  • 東莞網(wǎng)站建設(shè)是什么意思西安seo培訓(xùn)學(xué)校
  • 設(shè)計(jì)相關(guān)網(wǎng)站武漢企業(yè)seo推廣
  • 網(wǎng)站建設(shè)編程語(yǔ)言常用的seo查詢(xún)工具有哪些
  • 做3d模型的叫什么牛的網(wǎng)站色盲眼中的世界
  • 用訂制音樂(lè)網(wǎng)站做的音樂(lè)算原創(chuàng)嗎百度關(guān)鍵詞優(yōu)化專(zhuān)家
  • 手機(jī)端網(wǎng)站制作seo推廣有哪些
  • 外管局網(wǎng)站做延期收匯報(bào)告推廣排名seo
  • 怎么樣自己做網(wǎng)站賺錢(qián)年入40萬(wàn)百度推廣代理商加盟
  • wordpress includeseo網(wǎng)站分析
  • wordpress出現(xiàn)兩個(gè)首頁(yè)關(guān)鍵詞優(yōu)化的最佳方法
  • 佛山移動(dòng)網(wǎng)站建設(shè)公司seo搜索優(yōu)化公司
  • 服務(wù)器在美國(guó)的網(wǎng)站seosem是指什么意思
  • 北京h5網(wǎng)站開(kāi)發(fā)公司北京網(wǎng)站
  • 我?guī)驮p騙團(tuán)伙做詐騙網(wǎng)站獲利留電話(huà)的廣告網(wǎng)站
  • 武漢教育網(wǎng)站建設(shè)優(yōu)化發(fā)帖平臺(tái)
  • 網(wǎng)頁(yè)建設(shè)類(lèi)有哪些軟件seo營(yíng)銷(xiāo)
  • 織夢(mèng)手機(jī)網(wǎng)站制作教程seo站長(zhǎng)平臺(tái)
  • ts wordpress網(wǎng)站優(yōu)化建議
  • 網(wǎng)站流量 名詞洛陽(yáng)seo網(wǎng)絡(luò)推廣
  • wordpress更改前端引用關(guān)鍵詞優(yōu)化軟件哪家好
  • 阿里巴巴網(wǎng)站圖片怎么做國(guó)際時(shí)事新聞2022最新
  • 旅游網(wǎng)站開(kāi)發(fā)團(tuán)隊(duì)百度廣告投放代理商
  • 南充網(wǎng)站建設(shè)公司seo 公司
  • 南通做網(wǎng)站的推廣普通話(huà)的文字內(nèi)容
  • 中國(guó)建設(shè)銀行新聞網(wǎng)站最近一周熱點(diǎn)新聞
  • 手機(jī)端企業(yè)網(wǎng)站源碼下載推廣產(chǎn)品的方式有哪些
  • notepad做網(wǎng)站網(wǎng)絡(luò)seo啥意思
  • 局域網(wǎng)網(wǎng)站開(kāi)發(fā)濟(jì)南seo外包公司
  • 外包網(wǎng)站建設(shè)費(fèi)用包括網(wǎng)站備份如何制作網(wǎng)頁(yè)鏈接教程