【mysql 性能优化篇】优化数据库结构

删除数据

SQL>delete from  表名  where  条件;
SQL>commit;(确认删除了就提交,别人才能看到该表的数据,也才能操作)

delete from empn where id=3 or id=2;

 金沙官网线上 1

4.3、使用批量插入。

更新数据

SQL>update from  表名  set  字段名=值,字段名2=‘值2’  where  条件
SQL>commit;(或者rollback,回退,撤销操作)

 

方法5:
分析表、检查表、优化表

增加(插入)数据

SQL>insert  into  表名  values(值1,值2 /*根据表中的字段顺序和字段类型相应填写*/);
SQL>commit;  (提交,提交了别的人才看看到这个数据)

SQL>insert  into  表名  value(值1,NULL(可以允许为空的字段才行)/*根据表中的字段顺序和字段类型相应填写*/);
SQL>commit;  

SQL>insert  into  表名(字段名1,字段名3)  values(值1,值3)
/*选择部分字段插入数据 没有选择的字段对应的值是NULL值。*/
/*这种语法必须包含非空字段*/

插入多条记录时,可以使用一条 insert 语句插入一条记录,也可以使用一条insert语句插入多条。后者的速度比前者的速度要快。

演示:

金沙官网线上,(例如QQ用户的建立,数据库对应的就是增加数据)

(1)先建立一张表:

create table empn(id number, primary key, name varchar2(30),salary number);

金沙官网线上 2

加上primary  key  之后,ID必填,且不会重复:

desc empn;

金沙官网线上 3

没有提交,自己可以看到,但是别的终端不能再操作,会锁死,直到使用的人提交(或者撤销操作rollback了)为止。

SQL>commit;
Commit complete.

 

(2)允许为空的字段可以填NULL:

insert into empn values(2, NULL, 2345678);

 金沙官网线上 4

 

(3)选择部分字段插入数据:

insert into empn(id, name) values(3,'Tom');

金沙官网线上 5

set unique_checks=0;

分析表语句:

方法2:
增加中间表

alter table table_name disable keys

禁止索引

禁止唯一性检查语句

方法1:
将字段很多的表分解为多个表。
通过这种分解,可以提高表的查询效率。对于字段很多,且有些字段使用不频繁的表,可以通过这种分解的方式优化数据库的性能。

当需要批量导入数据时,如果能有load data infile 批量导入,就尽量使用。因为 load data infile 语句 导入数据比insert 语句快。

alter table table_name enable keys

4.1 禁止索引
插入记录时,mysql会根据表的索引对插入的记录建立索引。如果插入大量数据,建立索引会降低插入记录的速度,为了解决这种问题,可以在插入记录之前,仅用索引,数据插入完毕后再开启索引。

set aotucommit=1;

方法4:
优化插入记录的速度

对于经常需要联合查询的表,可以建立中间表 提高查询效率。通过建立中间表,把需要经常联合查询的数据插入到中间表,然后将原来的联合查询改为对中间表的查询,以此来提高查询效率。

OPTIMIZE TABLE t_user_info 

插入数据时,mysql会对插入的记录进行唯一性校验,这种唯一性校验也会降低插入记录的速度,为了降低这种情况对查询速度的影响,我们先禁止唯一性检查。

本文由金沙官网线上发布于数据库,转载请注明出处:【mysql 性能优化篇】优化数据库结构

您可能还会对下面的文章感兴趣: