MySQL修改表结构及SQL性能优化

来源:互联网 发布:java 数据字典表设计 编辑:程序博客网 时间:2024/05/18 03:25
修改表结构:

1、添加字段

alter table tablename add email varchar(30) not null;

alter table tablename add id int unsigned not null auto_increment primary key;

2、修改字段

alter table tablename modify colname varchar(10);//修改字段数据类型

alter table tablename change colname newcolname varchar(20);//修改字段名

3、删除字段

alter table tablename drop  colname;


创建用户:

创建decorate用户对decorate库有操作权限 密码123456

grant select,insert,update,delete on decorate.* to decorate@"%" identified by "123456"

性能优化:

1.尽可能的将字段设置为NOT NULL。
2.有些字段使用ENUM而不是VARCHAR,比如“性别”,“国家”,“民族”,“状态”或“部门”。
3.永远为每张表设置一个ID,每张表都设置一个ID做为其主键,而且最好的是一个INT型的(推荐使用UNSIGNED),并设置上自动增加的AUTO_INCREMENT标志。
4.避免select * 这种方式,改用用字段名。
5.避免在WHERE子句中使用in,not in,or 或者having,使用 exist 和not exist代替 in和not in。
6.避免大规模排序,ORDER BY、GROUP BY、HAVING子句。
7.检查索引,为WHERE、JOIN中用到的字段加上索引,为搜索字段建索引。
不要在建立索引的字段上进行下列操作:

避免对索引字段进行计算操作

避免在索引字段上使用not,<>,!=

避免在索引列上使用IS NULL和IS NOT NULL

避免在索引列上出现数据类型转换

避免在索引字段上使用函数

避免建立索引的列中使用空值。

8.避免在JOIN、WHERE子句中使用计算。
9.避免在查询中使用%模糊匹配。
10. 当只要一行数据时使用LIMIT1,可以增加性能,这样数据库引擎会在找到一条数据后停止搜索,而不是继续往后查少下一条符合记录的数据。
如:

"SELECT name,pass FROM user WHERE name = 'test'"   改为  "SELECT name,pass FROM user WHERE name = 'test' LIMIT 1"。

0 0