嗨, 大家好: 网站在新年后正式开通,欢迎大家加入我们,共同维护一个良好氛围的中国技术社区。 欢迎举报不良帖子,欢迎提供建议。
我们的QQ群:136102234,欢迎进群找答案,里边会有很多资深的大师们。 point overflow

我们大部分时间其实都是在做sql的优化。

所以优化功底大概能知道一个DBA的水平。

那应该怎么优化一个sql呢?

asked 2016-04-25 15:55:06

jkant's gravatar image

jkant ♦♦
11135138139
accept rate: 3%


1.如果不知道是哪个sql慢,就开启mysql的慢查询日志。

定期或者发现问题抓取sql,然后做统计分析处理。
对记录的日志文件用mysql安装目录下的bin目录下的 mysqldumpslow查看。 具体命令是 mysqldumpslow -s c -t 10 /path/to/slow.log。 可以提取出top10慢的sql语句模式。 这样就找到了哪些语句慢。

2.找到之后分析的最简单手段是explain查看执行计划。

例如 explain select * from t where xxx order by xxx。 查看explain的结果,第一步看索引,第二部看row影响函数,第三步看extra扩展信息。逐步处理分析。之后出专题来分析这个explain!

explain推荐地址

3.拆分或者合并sql

一些sql是简单的拼接逻辑,导致的各种问题,包括表结构以及查询方式。所以,这里就是考验sql用法的地方。顺带一提,你不会知道程序员们会写出来什么样的sql的!。这里之后也会专门做sql语法专题。

4.业务层优化。

如果,看到一个很长,特别长的sql,或者简单但是慢的sql。大概看看explain结果,如果没有比较不合理的地方,那么放弃优化这个sql,从业务着手吧。
业务优化需要先了解业务,然后结合业务写一个比较合适的sql出来,提供给开发。当然这个就要结合具体的业务去进行数据存储结构或程序架构的优化了。

link

answered 2016-04-25 16:05:24

jkant's gravatar image

jkant ♦♦
11135138139
accept rate: 3%

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "Title")
  • image?![alt text](/path/img.jpg "Title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Tags:

×72
×1

Asked: 2016-04-25 15:55:06

Seen: 2,007 times

Last updated: 2016-04-25 16:05:24