ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 数据库 >> MySql >> Mysql优化方案二之数据库类型选择及Sql语句优化

Mysql优化方案二之数据库类型选择及Sql语句优化

来源:网络整理     时间:2016-06-09     关键词:Mysql,sql语句

本篇文章主要介绍了"Mysql优化方案二之数据库类型选择及Sql语句优化",主要涉及到Mysql,sql语句方面的内容,对于MySql感兴趣的同学可以参考一下: 数据类型①尽可能小(占用存储空间少)Tinyint,smalint,mediumint,int,bigintvarchar(N),varchar(M)Datet...

数据类型

①尽可能小(占用存储空间少)

Tinyint,smalint,mediumint,int,bigint

varchar(N),varchar(M)

Datetime,timestamp

②尽可能定长

char(定长---最长255)、varchar(变长)

Decimal---->变长,double(float)--->定长

定长:快;变长:精度高

③尽可能使用正数

int(1)与varchar(1)

SQL语句

①在并发性高要求下,少用多表连接,拆分成多次执行(且查询拆分的够小,能增加查询缓存的利用率)

②大量数据插入,先关闭约束与索引再插入

myisam:Alter table table_name disable keys;  //禁用索引约束

---》大量数据插入--》Alter table table_name enable keys;  //启用

Innodb:Drop index,drop constraint;  //保留主键

--》Begin transaction|set autocommit=0;

--》大量数据插入--》Commit---》Add index,add constraint;

数据量少的情况下:insert  into table_name values(),(),(),(),();   //每次插入百条内(每次插入多条)

多次使用insert语句需使用prepare进行预编译,减少编译时间

③limit分页优化

无效检索过大:select table_name from table limit 100000,10;  //这样会跳过很多数据导致无效检索过大

解决方案:获取limit size如下:

select * From customers Where customer_id >=(
select customer_id From customers Order By customer_id limit 10000,1
) limit 10;

参考文章:http://www.cnblogs.com/fanyong/p/3351350.html

④仅查询需要

选取所需字段:select * from table;X

方案如下:select id,name from table;(这才是正确的,* 会造成无用的浪费 )

仅需一条:select username from table limit 1;//仅需一条数据(非分页)可用limit

⑤少用随机函数

每条记录都会执行:Order by Rand();//一旦使用这条随机语句会导致每条语句都会执行

解决方案:使用特定运算获得随机数进行查询

以上就介绍了Mysql优化方案二之数据库类型选择及Sql语句优化,包括了Mysql,sql语句方面的内容,希望对MySql有兴趣的朋友有所帮助。

本文网址链接:http://www.codes51.com/article/detail_1605227.html

相关图片

相关文章