建表
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之后的設(shè)置的查詢條件字段適合做索引
2)排序查詢 order by字段//排序字段適合做索引稚照。
設(shè)置
例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數(shù)據(jù)表中給外鍵授嘀、約束字段cat_id設(shè)置索引卤妒,可以提高聯(lián)表查詢的速度
2)左原則
模糊查詢,like %
% :關(guān)聯(lián)多個模糊內(nèi)容
_:關(guān)聯(lián)一個模糊內(nèi)容
select*from 表名 like? "beijing"
普通索引
alter table emp add index (epassword);
explain select*from emp where epassword like '%abc%'\G
評析:中間沒有出現(xiàn)abc的索引
例2 explain select*from emp where epassword like? '%abc'\G
例3 explain select*from emp where epassword like? 'abc%'\G
結(jié)論:
查詢條件信息在左邊出現(xiàn)常空,就給使用索引
xxx% yyy_使用索引
%周行知%不使用索引
復(fù)合索引
?show create table emp;
例1? explain select *from emp where ename like? ?'abc%'\G
OR原則
OR左右的關(guān)聯(lián)條件
explain? select *from emp where empno=12345 or epassword like 'abc%'\G
OR的左右必須有索引