数据库----(Mysql语句性能调优)
2016-09-05 23:14
411 查看
开发时候可能因为项目周期或者自身能力不够只是为了实现功能,但是开发完毕对于性能调优,代码优化要求就高了,那么针对于mysql的优化建议整理如下:
1.将经常要用到的字段(比如经常要用这些字段来排序,或者用来做搜索),则最好将这些字段设为索引。
2.字段的种类尽可能用int 或者tinyint类型。另外字段尽可能用NOT NULL。
3.当然无可避免某些字段会用到text ,varchar等字符类型,最好将text字段的单独出另外一个表出来(用主键关联好)
4. 字段的类型,以及长度,是一个很考究开发者优化功力的一个方面。
5.select * 尽量少用,你想要什么字段 就select 什么字段出来 不要老是用* 号!同理,只要一行数据时尽量使用 LIMIT 1
6.绝对不要轻易用order by rand() ,很可能会导致mysql的灾难!!
7.每个表都应该设置一个ID主键,最好的是一个INT型,并且设置上自动增加的AUTO_INCREMENT标志,这点其实应该作为设计表结构的第一件必然要做的事!!
8.拆分大的 DELETE 或 INSERT 语句。因为这两个操作是会锁表的,表一锁住了,别的操作都进不来了,就我来说 有时候我宁愿用for循环来一个个执行这些操作。
9.不要用永久链接 mysql_pconnect();除非你真的非常肯定你的程序不会发生意外,不然很可能也会导致你的mysql死掉。
10.永远别要用复杂的mysql语句来显示你的聪明。因为复用性太差,如果稍微一更改,则将成为废弃代码。
11、尽量少用like 因为会对全表扫描,所以除非必要时候
12、统一sql语法,要是大写都大写,小写都小写,对于select*from dual 、select*From dual这两条sql语句,看似相同,但是sql执行会有差异,后者会执行解析两次
13、使用临时表来暂存临时数据,来减少对于主表的多次扫描
14、能用变量的话,最好是使用变量,通过外界传如参数不同,但是解析一次
15、避免在索引上进行运算,容易导致索引失效。
16、1)设计日期时候,建议用int取代char(8)。例如整型:20150603。 2)设计IP时候可以用bigint把IP转化为长整型存储。
17、join时,使用小结果集驱动大结果集
18、使用批量插入节省交互
19.多习惯使用explain分析sql语句
加群:300458205
参考资料:
http://www.cnblogs.com/hongfei/archive/2012/10/20/2732516.html
1.将经常要用到的字段(比如经常要用这些字段来排序,或者用来做搜索),则最好将这些字段设为索引。
2.字段的种类尽可能用int 或者tinyint类型。另外字段尽可能用NOT NULL。
3.当然无可避免某些字段会用到text ,varchar等字符类型,最好将text字段的单独出另外一个表出来(用主键关联好)
4. 字段的类型,以及长度,是一个很考究开发者优化功力的一个方面。
5.select * 尽量少用,你想要什么字段 就select 什么字段出来 不要老是用* 号!同理,只要一行数据时尽量使用 LIMIT 1
6.绝对不要轻易用order by rand() ,很可能会导致mysql的灾难!!
7.每个表都应该设置一个ID主键,最好的是一个INT型,并且设置上自动增加的AUTO_INCREMENT标志,这点其实应该作为设计表结构的第一件必然要做的事!!
8.拆分大的 DELETE 或 INSERT 语句。因为这两个操作是会锁表的,表一锁住了,别的操作都进不来了,就我来说 有时候我宁愿用for循环来一个个执行这些操作。
9.不要用永久链接 mysql_pconnect();除非你真的非常肯定你的程序不会发生意外,不然很可能也会导致你的mysql死掉。
10.永远别要用复杂的mysql语句来显示你的聪明。因为复用性太差,如果稍微一更改,则将成为废弃代码。
11、尽量少用like 因为会对全表扫描,所以除非必要时候
12、统一sql语法,要是大写都大写,小写都小写,对于select*from dual 、select*From dual这两条sql语句,看似相同,但是sql执行会有差异,后者会执行解析两次
13、使用临时表来暂存临时数据,来减少对于主表的多次扫描
14、能用变量的话,最好是使用变量,通过外界传如参数不同,但是解析一次
15、避免在索引上进行运算,容易导致索引失效。
16、1)设计日期时候,建议用int取代char(8)。例如整型:20150603。 2)设计IP时候可以用bigint把IP转化为长整型存储。
17、join时,使用小结果集驱动大结果集
18、使用批量插入节省交互
19.多习惯使用explain分析sql语句
加群:300458205
参考资料:
http://www.cnblogs.com/hongfei/archive/2012/10/20/2732516.html
相关文章推荐
- 用sql语句取出mysql 数据库中表的字段的说明信息
- [转] 在 MySQL 数据库中使用 C 执行 SQL语句
- MySql语句常见操作-创建数据库,选择数据库,创建表,数据库中文乱码;
- mysql 分页查询语句数据库查询
- mysql设置数据库存储引擎的语句
- 在 MySQL 数据库中使用 C 执行 SQL 语句
- [mysql] 数据库查找时显示制定行的sql语句
- mysql 数据库中常用的sql语句
- MySQL 数据库中使用 C 执行 SQL语句
- mysql语句中用if的例子_数据库技巧
- 数据库分页语句(mysql,oracle,sqlserver,DB2)
- mysql导出数据库表的创建sql语句(使用mysql control center/MYSQL-Front)
- 3大数据库(Sql-Server,MySql和Oracle)的分页SQL语句实现
- mysql 常用数据库语句 小练习
- mysql下面获取数据库的列数和列的名字的sql语句
- [转] 在 MySQL 数据库中使用 C 执行 SQL语句
- 3大数据库(Sql-Server,MySql和Oracle)的分页SQL语句实现
- mysql 常用数据库语句 小练习
- mysql 查询数据库中的存储过程与函数的语句
- DotNet下开发MySQL-02 (数据库执行SQL语句)