@r星校長
什麼是索引?
索引是一張特殊的表,該錶儲存了主鍵與索引字段,並指向實體表的記錄。
先假設有一張表student
,表的資料有100
萬條資料,其中有一條資料是name="xiaoming"
,如果要拿這條資料的話需要寫的sql
是
select
*from student where name=
'xiaoming'
一般情況下,在沒有建立索引的時候,mysql
需要掃瞄全表及掃瞄100
萬條資料找這條資料,這個效率實際上是非常慢的,那麼有什麼優化方法呢?答案就是索引。
如果我在name
欄位上建立索引,那麼mysql
只需要掃瞄一行資料及為我們找到這條name='xiaoming'
的資料,是不是感覺效能提公升了好多咧….
單列索引分類和建立
我們使用最常見的是單列索引,分為主鍵索引、普通索引和唯一索引。
1.主鍵索引
主鍵索引一般在建表時建立,不允許有空值並且值唯一,最好是與表的其他欄位不相關的列或者是業務不相關的列。一般會設為int
而且是auto_increment
自增型別的,例如一般表的id
字段。
建立主鍵索引一般建表時使用primary
關鍵字,例如如下語句:
create
table
`student`
(`id`
int(11)
notnull
auto_increment
,primary
key(
`id`))
engine
=innodb
auto_increment=6
default
charset
=utf8;
2.普通索引普通索引實際上是我們最常見的,比如上述提到的例子,我們給name
增加乙個普通索引如下:
create
index name_index on
`student`
(`name`
);
注意這裡的 ` 不是單引號,而是鍵盤 1 數字左邊的符;
或者是:
alter
table student add
index name_index(
`name`
);
3.唯一索引唯一索引和主鍵索引類似,要求字段唯一,但是可以允許欄位為空,建立語句如下:
create
unique
index name_index on
`student`
(`name`
);
唯一索引可以用來對資料進行強制性要求,可以禁止某錶的某個字段出現重複資料。
程式設計要求
根據提示,在右側編輯器建立如下student
表結構,並建立id
為主鍵索引,name
為唯一索引(索引名name_index
),score
為普通索引(索引名score_index
)。
student
結構如下:
欄位名型別、屬性
idint(11) ,非空,自增長
name
varchar(20) , 非空
score
int(10)
預期輸出:
table non_unique key_name seq_in_index column_name collation cardinality sub_part packed null index_type comment index_comment
student 0
primary
1 id a 0
null
null
btree
student 0 name_index 1 name a 0
null
null
btree
student 1 score_index 1 score a 0
null
null yes btree
開始你的任務吧,祝你成功!
use students;
#請在此處新增實現**
########## begin ##########
#1.建立student表結構並且設定id為主鍵索引
create
table student(
id int(11
)not
null
auto_increment
,primary
key(
`id`),
name varchar(20
)not
null
, score int(10
));#2.對name建立唯一索引
create
unique
index name_index on
`student`
(`name`);
#3.對score建立普通索引
alter
table student add
index score_index(
`score`);
show
index
from student;
########## end ##########
#! /bin/bash
mysql -uroot -p123123 <<
edf
drop database if exists students;
create database students;
use students;
edf#執行sql檔案
PHP和Mysql分頁 二
在原基礎上增加了輸入頁碼跳轉的js功能 index.php 連線錯誤 mysqli connect error 檢查get方法能不能取得當前page page isset get page get page 1 if page 1 sql select id from practice4 resul...
mysql建立索引技巧
1,建立mysql索引 對於查詢佔主要的應用來說,索引顯得尤為重要。很多時候效能問題很簡單的就是因為我們忘了新增索引而造成的,或者說沒有新增更為有效的索引導致。如果不加 索引的話,那麼查詢任何哪怕只是一條特定的資料都會進行一次全表掃瞄,如果一張表的資料量很大而符合條件的結果又很少,那麼不加索引會引起...
MYSQL開發技巧
a表取經四人組 b表悟空的兄弟 1.join操作的型別 inner join 內連線inner join 基於連線謂詞將兩張表 如a和b 的列組合在一起,產生新的結果表。產生的結果集如 圖一 紅色區域 例如 同時存在與取經四人組中的和悟空的兄弟表中的記錄為 2.join操作的型別 left oute...