mysql不被人知的秘密(4)
describe 语句使用方法和explain一样。
##2.2 优化子查询
多用连接查询来代替子查询
为什么呢?
因为子查询时,mysql需要为内层查询结果建立一个临时表,然后外层查询在临时表中查找,查询完后需要撤销临时表。
而连接查询不需要建立临时表,所以比子查询快。
##2.3优化插入记录的速度
插入记录时,索引,唯一性校验等都会影响到插入记录的速度。而且,一次插入多条记录和多次插入记录所耗费的时间也不同。
1.禁用索引
插入数据时,mysql会根据表的索引对插入的记录进行排序,降低插入速度。解决这个问题可以在插入记录之前禁用索引,等到插入完毕后在开启。
alter table 表名disable keys; //禁用索引
alter table 表名enable keys; //开启索引
2.禁用唯一性检查
插入数据时,mysql会对插入的记录进行唯一性检查,会降低插入速度。
set unique_checks=0; //禁用唯一性
set unique_checks=1; //开启唯一性
3.优化insert语句
insert into 表名values
(......),
(......);
insert into 表名values (......);
insert into 表名values (......);
上面两种插入方法,第一种与数据库的连接等操作,明显比第二种快。
##2.3分析表,检查表和优化表
分析表:分析关键字的分布
检查表:检查表是否存在错误
优化表:消除删除或者更新造成的空间浪费
当执行下面三个操作时,mysql数据库会给表加一个只读锁,只能读取记录,不能更新和插入记录。
1.分析表
analyze table 表名1 [,表名2....];
2.检查表
check table 表名1 [,表名2....] [option];
option有五个参数:quick,fast,changed,medium,extended ->>执行效率依次降低
-->option选项只对MyISAM类型的表有效。
3.优化表
optimize table 表名1 [,表名2....];
-->只能优化表中的varchar,blob和text字段
如果一个表使用了text或blob这样的数据类型,那么更新,删除等就会造成的磁盘空间的浪费。操作完成后,以前分配的磁盘空间不会自动回收。
使用optimize可以将磁盘碎片整理出来,以便利用。
下面是一些mysql基本使用命令。
一:mysql查看基本命令
(1):查看当前有哪些数据库
show databases;
(2):使用mysql数据库
use test;
(3):查看当前数据库下的表
show tables;
(4):查看上述grade表建立的命令
show create table grade;
(5):查看student表的结构
desc student;
(6):查看数据库支持的存储引擎
show engines;
show engines \G ; // \G让结果更美观
相关新闻>>
- 发表评论
-
- 最新评论 更多>>