关闭

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

标签: mysql性能优化索引sqlselect
351人阅读 评论(0) 收藏 举报
分类:
修改表结构:

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:87989次
    • 积分:1295
    • 等级:
    • 排名:千里之外
    • 原创:61篇
    • 转载:6篇
    • 译文:0篇
    • 评论:31条
    个人信息
    文章分类
    最新评论