MySQL開發技巧 分頁和索引(二)

2021-10-25 01:49:24 字數 3700 閱讀 6086

@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...