MySQL优化
1.选择合适的数据类型
1)能用数字,不用字符串
2)char 定长 char(10) hello 10
varchar 变长 varchar(10) hello 5
text 没限制
建议:普通字符串(varchar) 文章(text)
2.每张表必须有主键,而且最好是短主键
3.适当的添加唯一约束(字段没有重复值)
4.避免数据库中出现NULL值(not null、default)
5.适当的添加外键(不加外键)
如果表添加了外键,会影响增删改的速度
6.避免出现select * 这样的查询语句
7.经常充当条件的字段添加索引
8.最好拿数字的字段充当条件
9.避免在索引字段上使用聚合函数(索引会失效)
10.尽可能少用like模糊查询(Sphinx)
11.尽可能少用子查询(用内连接代替)
12.数据量太大,数据库运行效率低(拆分表)
1)拆分字段:字段太多,个别字段数据量大
2)拆分记录:记录太多
13.访问量太高,数据库运行效率低
1)主从数据库(MySQL功能)
2)网站缓存
3)网站的静态化
14.负载均衡(硬件设备)
--------------------------------------------------------------------------
数据库的备份与还原
1.数据库备份
1)打开命令提示符窗口(Win7以管理员方式打开)
2)执行如下命令
mysqldump -u用户名 -p密码 库名>d:/aaa.sql
mysqldump -uroot -proot test>d:hello.sql
2.数据库还原
1)登录mysql数据库
2)创建一个数据库,并进入该库
3)执行如下语句
source d:/hello.sql
--------------------------------------------------------------
总结
1.视图View
2.触发器Trigger
3.存储过程Procedure
4.T-SQL编程
5.索引Index
6.存储引擎Engine
7.事务Transaction
索引Index(数据库优化)
作用:提高表的where条件查询语句的速度
说明:索引都是施加给表中的字段的
select * from 表名 where 字段 = 值;
什么样的字段应该添加索引:经常充当条件的字段
索引分类
1.主键索引:唯一、非空、一张表只有一个主键索引
2.唯一索引:唯一
3.普通索引:没有限制
4.全文索引:text
创建索引
1.主键索引
建表的同时,直接指定主键约束
2.唯一索引
1)建表的同时,之间指定唯一约束
2)create unique index 索引名 in 表名(字段);
3.普通索引
create index 索引名 on 表名(字段);
create index t_index on bbsinfo(title) ;
4.全文索引
create fulltext index 索引名 on 表名(字段);
create fulltext index t_index on bbsinfo(title);
说明:
MySQL5.7:在任何情况下出啊见全文索引都没问题
MySQK5.5:只有在MyISAM的引擎下才会成功(表的类型不支持全文索引)
给bbsInfo表的title字段添加唯一索引
create unique index t_index on bbsInfo(title);
查看某张表的所有索引信息
show index from 表名;
删除表的索引
drop index 索引名 on 表名;
drop index t_index on bbsInfo;
什么样的字段应当添加什么样的索引?
1.主键索引
2.唯一索引
3.普通索引
索引注意
1.什么样的字段应当添加索引?
2.什么样的字段应当添加什么样的索引?
索引的使用场合
1.经常充当条件的字段应当添加索引
2.应当在设计数据库时,直接考虑索引
--------------------------------------------------------------------------------------------------------------------------------------------------------------
存储引擎Engine(表的类型)
存储引擎的种类
1.ISAM :查询速度快、支持全文索引、不支持外键、不只是事物操作
2.MyISAM:ISAM升级
3.Memory:速度快、数据管理不稳定、数据驻留在内存、断电后数据全部丢失
4.InnoDB:速度较慢、不支持全文索引、支持外键、支持事物
可用的存储引擎
MyISAM:内容管理系统
InnoDB:技术型网站
网站种类的分类、
1.内容管理系统(CMS) Content Manager System
新闻、官网(门户网站)、房屋买卖、招聘...
2.技术型网站
bbs blog webo oa mail...
设置数据库的存储引擎
1.修改my.ini配置文件
default-storage-engine = 存储引擎名
注意:重启Mysql服务(配置文件不区分大小写)
2.建表的同时,直接指定表的存储引擎
MySQL5.0以前的写法
create table 表名
(
字段 数据类型 约束,
字段 数据类型 约束,
字段 数据类型 约束,
)type = 存储引擎;
MySQL5.0及以后的写法
create table 表名
(
字段 数据类型 约束,
字段 数据类型 约束,
字段 数据类型 约束,
)engine = 存储引擎;
例子:建表并指定存储引擎,将存储引擎设置为MyISAM
create table helloInfo
(
id int auto_increment primary key,
title varchar(100) not null,
content text not null
)engine=MyISAM;
查看表的存储引擎
show create table 表名;
show create table bbsInfo;
______________________________________________________________________________________________________________________________________________________________
事务Transaction
作用:保证数据的完整性
特性:原子性 一致性 隔离性 持久性
开启事务
start transaction
结束事务
commit;提交事务(成功)
rollback;回滚事务(失败)
事务的最终状态
commit;成功
rollback;失败
清空表
delete from 表名; 可恢复 支持事务
truncate table 表名; 不可恢复 不支持事务
例
start transaction;
delete from bbsinfo;
rollback;
事务的使用场合
1.项目中与金钱相关的功能
2.调试服务器中的数据库
不支持的事务的语句
create alter drop truncate
支持事务的语句
insert update delete
注意:
只有InnoDB的引擎支持事务
例子:
删除ttnews 库下的某一个新闻分类(newsTypes)typeId=3
1)删除评论
2)删除新闻
3)删除分类
扫一扫,关注一下吧!