MySQL优化技巧

MySQL优化技巧
1.查询时将like子句转换成and: where name like 'abc%'转换成 where name>='abc' and name<'abc'
2.用>=替代>:如:id>3和id>=4的区别是,前者dbms先跳id=3的记录,往后扫描表,而后者直接跳到4往后扫描
3.利用LIMIT 1取得唯一行:一个LIMIT 1会令你的查询更加有效。这样数据库引擎发现只有1后将停止扫描,而不是去扫描整个表或索引
4.索引中的检索字段:索引不仅是主键或唯一键。如果你想搜索表中的任何列,你应该一直指向索引。
5.保证连接的索引是相同的类型;如果应用程序中包含多个连接查询,你需要确保你链接的列在两边的表上都被索引。这会影响MySQL如何优化内部联接操作。此外,加入的列,必须是同一类型。例如,你加入一个DECIMAL列,而同时加入另一个表中的int列,MySQL将无法使用其中至少一个指标。即使字符编码必须同为字符串类型。
6.不要使用BY RAND()命令:这是一个令很多新手程序员会掉进去的陷阱。你可能不知不觉中制造了一个可怕的平静。这个陷阱在你是用BY RAND()命令时就开始创建了。如果您真的需要随机显示你的结果,有很多更好的途径去实现。诚然这需要写更多的代码,但是能避免性能瓶颈的出现。问题在于,MySQL可能会为表中每一个独立的行执行BY RAND()命令(这会消耗处理器的处理能力),然后给你仅仅返回一行。
7.尽量避免SELECT *命令:从表中读取越多的数据,查询会变得更慢。他增加了磁盘需要操作的时间,还是在数据库服务器与WEB服务器是独立分开的情况下。你将会经历非常漫长的网络延迟,仅仅是因为数据不必要的在服务器之间传输。始终指定你需要的列,这是一个非常良好的习惯。
8.从PROCEDURE ANALYSE()中获得建议:PROCEDURE ANALYSE()可让MySQL的柱结构分析和表中的实际数据来给你一些建议。如果你的表中已经存在实际数据了,能为你的重大决策服务。
9.将IP地址存储为无符号整型:许多程序员在创建一个VARCHAR(15)时并没有意识到他们可以将IP地址以整数形式来存储。当你有一个INT类型时,你只占用4个字节的空间,这是一个固定大小的领域。你必须确定你所操作的列是一个UNSIGNED INT类型的,因为IP地址将使用32位unsigned integer。
10.优化你的MySQL查询缓存:查询时尽量不要用mysql的内容函数如CURDATE()等,否则不能缓存查询语句
11.用EXPLAIN使你的SELECT查询更加清晰:EXPLAIN查询的结果,可以告诉你那些索引正在被引用,表是如何被扫描和排序的等等,如果整表扫描,说明需要添加一个索引
12.调整where子句的顺序:那些过滤掉最多数据的条件放到where子句最后
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值