亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

directory search
前言 MySQL的使用 MySQL多表同時刪除方案 MySQL跨表、多表更新SQL語句總結(jié) MySQL存儲引擎 安裝 常規(guī)方式編譯安裝MySQL 采用cmake方式編譯安裝MySQL 使用rpm包安裝MySQL 使用yum方式安裝MySQL 采用二進制方式免編譯安裝MySQL 多實例的安裝 什么是多實例 多實例的作用、問題以及應(yīng)用場景 多實例安裝01【推薦】 多實例官方安裝方案02 啟動、用戶和權(quán)限管理 單實例MySQL的啟動和關(guān)閉的方法 設(shè)置及修改MySQL root用戶密碼 找回丟失的MySQL root用戶密碼 創(chuàng)建MySQL用戶及用戶權(quán)限管理 基礎(chǔ)命令的操作 MySQL庫和表相關(guān)操作 MySQL中的索引操作 MySQL常用命令 MySQL的錯誤代碼 MySQL復習秘籍 備份與恢復 備份 恢復 mysqlbinlog命令 服務(wù)日志 主從復制 主從復制部署配置問題匯總 主從復制讀寫分離 災難恢復 配置phpmyadmin連接多實例MySQL MySQL語句大全 用戶創(chuàng)建、權(quán)限、刪除 數(shù)據(jù)庫與表顯示、創(chuàng)建、刪除 Mysql表復制及備份還原 數(shù)據(jù)庫表中數(shù)據(jù)操作 修改表中的指定一條數(shù)據(jù) 查詢表 日志 批量修改Mysql表引擎為InnoDB的方法 數(shù)據(jù)庫抽象層 PDO PDO對象常用方法 PDO 事務(wù)處理 PDO 與 MySQLi 二者效率簡單比較 大小寫敏感性 lower_case_table_names CentOS7安裝MySQL5.7密碼查看與修改
characters

為表的字段創(chuàng)建和刪除索引

無論建立主鍵索引還是普通索引,都要在表的對應(yīng)列上創(chuàng)建,可以對單列創(chuàng)建索引,也可以對多列創(chuàng)建索引。

創(chuàng)建和刪除主鍵索引

查詢數(shù)據(jù)庫,按主鍵查詢速度最快的,每個表只能有一個主鍵列,但是可以有多個普通索引列。主鍵列要求列的所有內(nèi)容必須唯一,而索引列不要求內(nèi)容必須唯一。

  1. 在建表的時候指定(如上述典型建表語句)

  2. 建表后通過alter命令增加、刪除主鍵索引

mysql> alter table app_member change uid uid int primary key auto_increment not null ;
mysql> alter table app_member drop primary key;
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

普通索引的建立

  1. 在建表時可以指定建立普通索引

  2. 使用alter命令新增或者刪除普通索引

mysql> alter table app_member add key qq(qq);
mysql> alter table app_member drop key qq;
# 或者使用drop方式刪除索引
mysql> drop index nickname on app_member;

使用create對字段的前N個字符創(chuàng)建普通索引

當遇到表中比較大的列時,列內(nèi)容的前n個字符在所有內(nèi)容中已經(jīng)接近唯一時,這時可以對列的前n個字符建立索引,而無須對整個列建立索引,這樣可以節(jié)省創(chuàng)建所以占用的系統(tǒng)空間,以及降低讀取和更新維護索引消耗的系統(tǒng)資源

mysql> create index qq on app_member(qq(6));
mysql> show index from app_member\G # 更加詳細的查看表的索引

為表的多個字段創(chuàng)建聯(lián)合索引

mysql> create index reg_ip_time on app_member(reg_ip,reg_time);

創(chuàng)建唯一索引

mysql> create unique index nickname on app_member(`nickname`);
mysql> drop index nickname on app_member;
#使用alter新增唯一索引方式操作
mysql> alter table app_member add unique key nickname(`nickname`);
#使用alter方式刪除索引操作
mysql> alter table app_member drop key nickname;

索引列的創(chuàng)建生效條件

既然所以可以加快查詢速度,那么給所有的列建立索引?

因為索引不但占用系統(tǒng)空間,更新數(shù)據(jù)庫時還需要維護索引數(shù)據(jù),因此,索引是一把雙刃劍,并不是越多越好。
例如:數(shù)十到數(shù)百行的小表上無需建立索引,更新頻繁,讀取較少的表要少建立索引。

需要在那些列創(chuàng)建索引呢?

索引一定要創(chuàng)建在where后的條件列上,而不是select后的選擇數(shù)據(jù)列上。
另外我們要盡量選擇唯一值多大表上建立索引


小結(jié)

創(chuàng)建主鍵索引
alter table app_member change uid uid int primary key;

刪除主鍵索引
alter table app_member drop primary key;

創(chuàng)建普通索引
alter table app_member add index qq(qq(6));

根據(jù)列的前n個字符創(chuàng)建索引
create index qq on app_member(qq);

根據(jù)多個列創(chuàng)建聯(lián)合索引
create index reg_time_ip on app_member(reg_time,reg_ip);

根據(jù)多個列的前n個字符創(chuàng)建聯(lián)合索引
create index reg_time_ip on app_member(reg_time(8),reg_ip(8));

刪除普通索引
alter table app_member drop index nickname;


Previous article: Next article: