MySQL 优化方案
基本上通过索引来解决 。
通常索引键在where , group by , order by 相关的列
一个表只能用一个索引(查询的时候)
所以当要执行复杂查询时最好使用联合索引就是 index (a,b,c,d,....)
where 需要注意的事,
索引是左到右使用的 , 如果是 index(a,b,c) 那么可以
1. where a = x and b = y and c = z
2. where a = x order by b,c
3 where a = x group by a,b,c
group by 需要注意的事 :
如果是多表查询,group by 索引只能group 最后的那个被join出来的表的列
比如 a straight join b
那么 group by a.x 是可以的
如果是 group by a.x,b.y 那就fair 了
table join 完了最后只能有一个表索引,其它表的列的索引全部作废了
但是在join的时候他们的索引是有帮助的
order by 要注意的事
group by 之后 要order by 是很困难的,因为他们必须是用联合索引顺着走.但一般上不那么巧
而且如果你order by 有 desc 反来反去也是不会走索引的。
所以呢遇到一些没办法用索引来优化的案子只好退而求其次
group by 和 order by 都是很伤的,尤其是你join table 的话它通常还会要 using temp filesort .
所以尽可能满足其中一个也好 。
那么如果真的无法满足的话,那么要确保数据量不要太大不然就gg 了 .
那么其它的一些方向就是通过一些table 设计来尽可能的优化
比如 : 反范式
就是把多个table的数据放在一个table 让他不必join .
这样的缺点就是重复数据多坑多,admin update的时候要同步的地方也多
maintain 起来会很难 。
优点就是数据在一个table 索引就容易建了 。
预先计算
就是不要在拿数据的时候才做计算,尽可能预先算了放进去 。
那么可以减低需要 group by sum order by sum 之类的问题 .
缓存
要确保每个语句一定可以被缓存,不要使用日期的函数来写语句,比如 where a.x = now()
把语句拆开
让c#分几次查询 ,简化sql语句 .
好处是可以分散缓存,容易使用各各表的索引 。
当然要在c#做,就要厉害LINQ啦
EXPLAIN 那些事 :
using temp filesort 都是不好的,filesort是因为有sort, 而 buffer不够就会用 temp,那就更糟糕了,子查询等也会制造temp
rows 表示扫描多少行,在 innodb中是不准的!可以用 myisam 做test.
MySQL 优化方案的更多相关文章
- MySql优化方案
mysql优化方案总结 u Mysql数据库的优化技术 对mysql优化时一个综合性的技术,主要包括 a: 表的设计合理化(符合3NF) b: 添加适当索引(index) [四种: 普通索 ...
- mysql优化方案总结
u Mysql数据库的优化技术 对mysql优化时一个综合性的技术,主要包括 a: 表的设计合理化(符合3NF) b: 添加适当索引(index) [四种: 普通索引.主键索引.唯一索引u ...
- mysql优化方案之sql优化
优化目标 1.减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先 ...
- 数据库mysql优化方案
1.创建索引对于查询占主要的应用来说,索引显得尤为重要.很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致.如果不加索引的话,那么查找任何哪怕只是一条特定的数据 ...
- 大佬是怎么思考设计MySQL优化方案的?
在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程,很多查询优化工作实际上就是遵循一些原则,让MySQL的优化器能够按照预想的合理方式运行而已. 一.优化的哲学 注:优化有风险,涉足需谨 ...
- 大牛是怎么思考设计MySQL优化方案
在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程,很多查询优化工作实际上就是遵循一些原则,让MySQL的优化器能够按照预想的合理方式运行而已. 1.优化的哲学 注:优化有风险,涉足需谨 ...
- MySQL优化方案二
摘自:http://www.thinkphp.cn/topic/3855.html 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需 ...
- 大牛是怎么思考设计MySQL优化方案的?
在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程,很多查询优化工作实际上就是遵循一些原则,让MySQL的优化器能够按照预想的合理方式运行而已. 图-MySQL查询过程 一.优化的哲学 ...
- mysql 性能优化方案
网 上有不少MySQL 性能优化方案,不过,mysql的优化同sql server相比,更为麻烦与复杂,同样的设置,在不同的环境下 ,由于内存,访问量,读写频率,数据差异等等情况,可能会出现不同的结果 ...
随机推荐
- YII增加全局函数
法1: 在使用Yii开发中我们经常会遇到一个问题,每次使用Yii的组件.扩展等,我们会像下面一样去写: <?php Yii::app()->user; Yii::app()->get ...
- 【转】C语言文件操作解析(三)
原文网址:http://www.cnblogs.com/dolphin0520/archive/2011/10/07/2200454.html C语言文件操作解析(三) 在前面已经讨论了文件打开操作, ...
- 《图解HTTP》 第11章 web的攻击技术
11.1 针对Web的攻击技术 简单的HTTP协议本身并不存在安全性问题,所以协议本身几乎不会成为攻击的对象. 11.1.1 HTTP不具备必要的安全功能 11.1.2 在客户端即可篡改请求 在HTT ...
- MyEclipse中用Maven创建Web项目(亲测有效)
new --> other 1.Wizards: mvaen 2.Maven Project 3.Next Use Default Workspace Location 1.weba ...
- Xcode开启gcc/g++
Apple announced Xcode 4.3 for OSX Lion and 4.4 for OSX Mountain Lion last week. The major difference ...
- 黑马程序员_<<泛型>>
--------------------ASP.Net+Android+IOS开发..Net培训.期待与您交流! -------------------- 1. 泛型 1.概述 泛型是为了解决 ...
- 大学生程序猿IT情书“2014爱的告白挑战赛”获奖名单及优秀情书展示系列之 - 【IT术语】情书+【搞笑另类】情书
经过专家评委们的层层精心评选和认真讨论,恭喜下面同学终于入选CSDN高校俱乐部"大学生程序猿IT情书2014爱的告白挑战赛活动"优胜者名单.获奖者将在本周内收到邮件通知.请依照邮件 ...
- hdu 4940 Destroy Transportation system(水过)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4940 Destroy Transportation system Time Limit: 2000/1 ...
- CH BR8(小学生放假了-clock()/CLOCKS_PER_SEC-斜率优化常错集锦)
小学生放假了 总时限 26s 内存限制 256MB 出题人 zsyzzsoft 提交情况 16/150 初始分值 1500 锁定情况 背景 我们能见到的最可怕的事情,莫过于小学生放假了! 描述 小学生 ...
- Java基础知识强化59:String(字符串)和其他类型的相互转化
1. String类型 ---> 其他类型 (1)使用基本类型包装类的parseXXX方法 e.g:String(字符串)转化为int(整型) String MyNumber ="12 ...