尽量使用性能高的比如left join等,尽量减少数据查询的column,尽量不要查询冗余数据,like的话“%%”是没有 办法使用索引的,但是“%”是可以使用索引的

having以前一直不知道到底真正的用途是什么,觉得跟where这不是一样的吗,现在区分开来了

因为where是对结果集的筛选,若分组之后就没法使用where了,

所以having应运而生,having就是对分组后的数据进行筛选的,搭配group by 放在其之后,如果有order by 则也放在order by之后

mysql数据库的引擎有8种,

一般常用的有3中,innodb,这种是事务性的,所以一些安全性的sql,使用它,这样可保证数据的一致性

myiasm,这种是可以建立全文索引的,所以如果要对全文进行全文索引查询,那么可以在简历数据库的时候使用这个,但是虽然是索引,但是要注意,字符越少,它的索引越有可能无法创建,必须是有连接性,有规律的,这样索引的命中率才大

memory,这种索引就类似于memcache这种了,就是一个缓存,很快,但是一旦挂掉,那么数据库就丢失了。

索引的建立是要消耗空间的,在mysql中如果对一个键建立索引,那么会产生myf还是什么文件的了,挺大的

暂时就记得这么多了,还有好几个知识点不太记得了,记起来再写

二、mysql的视图并不是临时表,而是真正的数据,对视图中的数据进行操作,数据表中的数据也会改变,可定义为是否可更新

视图有很多优点,主要表现在:
  •视点集中
  •简化操作
  •定制数据
  •合并分割数据
  •安全性

视图也存在一些缺点:

最大的缺点就是视图带来的更新负担,比如源数据改了,那么视图中要做相应更新,视图中数据改了源数据也要做同步

三、自定义函数的使用

这里注意(步骤0:
    首先是定界符使用delimiter来表明使用  // 来区分不是   ;  的定界
    其次注意有个returns int  要表达出返回的类型
    第三、begin开始
    第四返回类型
    第五end  //  表明结束
如果查询的话也要注意定界符的使用!
 
 
存储过程同理:
  
需要注意写函数的时候有out 跟in变量,这两是不一样的,调用的时候也是不同的
 
工作总结:

由于sql分组有问题,

导致查询出来的虽然数据没有问题,但是牵扯到游标,所以count计算的数量是它实际数据条数的倍数,

所以跟之前修改之后修改写的关于分组表的sql在性能分析上可能之前的sql占优,但是

由于分组的问题,导致游标下移查询倍数,虽然是temp的但是游标还是要走的,游标也是为什么查询速率快的原因

PS:这里要十分注意,有可能的是,直接使用mysql是没有问题的,但是有可能使用工具,比如说mysql的图形化工具跟

jdbc或者是是别的orm框架什么的可能就会有这样的问题,游标的问题

摘录:

本文从游标的基本概念,到生命周期来谈游标。游标是非常邪恶的一种存在,使用游标经常会比使用面向集合的方法慢2-3倍,当游标定义在大数据量时,这个比例还会增加。如果可能,尽量使用while,子查询,临时表,函数,表变量等来替代游标,记住,游标永远只是你最后无奈之下的选择,而不是首选。

游标是邪恶的!

 
 
  add,alter,drop是DDL语句,insert,update,delete是DML语句 DDL语句是对表结构的修改,DML语句是对表数据的修改
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

sql优化原则的更多相关文章

  1. 我的mysql数据库sql优化原则

    原文 我的mysql数据库sql优化原则 一.前提 这里的原则 只是针对mysql数据库,其他的数据库 某些是殊途同归,某些还是存在差异.我总结的也是mysql普遍的规则,对于某些特殊情况得特殊对待. ...

  2. (转)SQL 优化原则

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...

  3. Oracle SQL 优化原则(实用篇)

    由于SQL优化优化起来比较复杂,并且还受环境限制,在开发过程中,写SQL必须遵循以下几点原则: 1.Oracle 采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他Where ...

  4. SQL 优化原则

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...

  5. SQL优化原则(转)

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统 ...

  6. Oracle SQL优化原则

    原文:http://bbs.landingbj.com/t-0-240353-1.html 1.选用适合的 ORACLE 优化器 2.访问 Table 的方式 3.共享SQL语句 共享的语句必须满足三 ...

  7. sql优化原则与技巧

    加快sql查询是非常重要的技巧,简单来说加快sql查询的方式有以下几种:一.索引的引用 1.索引一般可以加速数据的检索速度,加速表与表之间的链接,提高性能,所以在对海量数据进行处理时,考虑到信息量比较 ...

  8. 一些sql优化原则

    1.我们在设计表的时候,尽量让字段拥有默认值,尽量不要让字段的值为null. 因为,在 where 子句中对字段进行 null 值判断(is null或is not null)将导致引擎放弃使用索引而 ...

  9. oracle优化原则(二)

    SQL优化原则 二.SQL语句编写注意问题 www.2cto.com 下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍.在这些where子句中,即使某些列存在索引,但是由于编写了劣质 ...

随机推荐

  1. openstack私有云布署实践【11.3 计算nova - compute节点-nova用户免密登录(用于云主机冷迁移+扩展云主机大小)】

    云主机迁移+扩展云主机大小 ,官方说它依赖nova用户之间的免密登录.确保每个resion区域的compute节点服务器他们可以相互SSH免密   compute1-7     他们相互SSH免密 k ...

  2. ES 6 : let与const

    1.let命令 [ 基本用法 ] let命令的用法与var类似,用于声明一个变量,但是let声明的变量只能在let所在的代码块内有效: 上述代码块中使用let和var声明了两个变量.然后在代码块之外调 ...

  3. object model 概述

    Object Model 综述 标准 C++ 的对象模型为对象的动态特性提供了运行时的支持. 但是它静态的本性决定了在某些领域它表现出僵化.不可扩展的特点. GUI编程就是一个既需要运行时编译的效率, ...

  4. 基于html5 canvas 的强大图表插件【Chart.js】

    名词解释 Chart.js:是基于html5和canvas的强大图表插件,支持多样的图表形式,柱状线性饼环极地雷达等等: canvas:只兼容到IE9 excanvas.js:强大的第三方兼容插件,可 ...

  5. 【IE6的疯狂之一】IE6中奇数宽高的BUG

    IE6真是太疯狂了.今天由于项目需要做了这么一个布局:一个外部的相对定位div,内部一个绝对定位的div(right:0), 如图: 可是在IE6下查看,却变成了right:1px的效果了: IE6还 ...

  6. sqlmap基础使用

    测试许多款 sql注入工具 最终还是发现 sqlmap 最为强悍 谁用谁知道!赶紧抛弃掉手上一大堆 sql 注入工具吧 : )测试环境:ubuntu 10.10 & windows 7(x64 ...

  7. Quartz的cron表达式

    一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素. 按顺序依次为 秒(0~59) 分钟(0~59) 小时(0~23) 天(月)(0~31,但是你需要考虑你月的天数) 月(0~11) 天( ...

  8. 把Excel工作簿的每个工作表提取出来保存为新工作簿

    平台:MS office 2010 任务:有个excel工作簿,其中有上百个工作表,要求把每一个工作表全部保存为新工作簿,如果一个一个复制出来太傻了,可以用excel自带的VB解决. 方法:打开工作簿 ...

  9. 整合改造百度编译器到thinkphp上传图片到OSS

    oss上传类库,放到public下,放到extend下,实例化是报错找不到上传类(我不知道为什么).

  10. 关于安装第三方模块和PILLOW

    看廖雪峰老师这一节的教程卡在这里挺久了 在谷歌上了搜了很久,最后根据这个教程上解决了这个问题 http://www.yihaomen.com/article/python/566.htm 觉得自己好蠢 ...