建表
create table emp(
empno? int(10) unsigned? NOT NULL DEFAULT '0'? COMMENT '雇員ID',
ename? varchar(20) NOT NULL DEFAULT '' COMMENT ' 名字',
job varchar(9) NOT NULL DEFAULT '',
mgr mediumint(8) unsigned NOT NULL DEFAULT '0',
hiredate date NOT NULL,
sal decimal(7,2) NOT NULL,
comm decimal(7,2) NOT NULL,
deptno mediumint(8) unsigned NOT NULL DEFAULT '0',
epassword char(32) DEFAULT ' ',
key? ? `empno`??(`empno`),
key? `ename`? ? (`ename`,`job`)
) engine=myisam DEFAULT charset=utf8;
索引適合場景
1)where之后的設置的查詢條件字段適合做索引
2)排序查詢 order by字段//排序字段適合做索引。
設置
例1? explain select*from? emp order by empno limit 50\G;
黃金索引
例2 explain select? ?ename.job? ?from? emp \G
連接查詢
join join on
goods:id name cat_id
category:cat_id name......
在Goods數據表中給外鍵、約束字段cat_id設置索引,可以提高聯表查詢的速度
2)左原則
模糊查詢,like %
% :關聯多個模糊內容
_:關聯一個模糊內容
select*from 表名 like? "beijing"
普通索引
alter table emp add index (epassword);
explain select*from emp where epassword like '%abc%'\G
評析:中間沒有出現abc的索引
例2 explain select*from emp where epassword like? '%abc'\G
例3 explain select*from emp where epassword like? 'abc%'\G
結論:
查詢條件信息在左邊出現,就給使用索引
xxx% yyy_使用索引
%周行知%不使用索引
復合索引
?show create table emp;
例1? explain select *from emp where ename like? ?'abc%'\G
OR原則
OR左右的關聯條件
explain? select *from emp where empno=12345 or epassword like 'abc%'\G
OR的左右必須有索引