尽量使用性能高的比如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. java四种xml解析区别

    1.DOM解析 dom解析是根据树形结构解析,将整个文档加载到内存中,因此对内存的要求较高,所以可以对该文档数据进行多次操作(增,删,改,查). 2.SAX解析 SAX解析是根据事件模型解析,边读取文 ...

  2. MQTT协议之 Apache Apollo服务

    一.说明 MQTT是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分.该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网) ...

  3. CUDA开发时用到的各种Linux命令

    cat 读取文件中的全部内容. 例:cat cuda_add.cu

  4. RockMongo 安装

    1. yum install php-pecl-http php 2. yum install httpd 3. yum install php-devel 4. pecl install mongo ...

  5. openstack私有云布署实践【9.3 主从controller单向同步glance-image目录】

    采用Rysnc单向同步,而不用双方实时同步,原因是在历史的运行过程中,我们发现,有些镜像包太大,当在主用的glance将镜像保存时,并不是一时半会就把镜像保存好,当主用在保存时,备用节点又在实时同步那 ...

  6. linux入侵控制与痕迹清理

    后门 (1)开机自动反弹shell (2)linux后门 Rookit 目前常用的有:t0rn /mafix/enyelkm 等 mafix rootkit Mafix是一款常用的轻量应用级别Root ...

  7. 真的了解JS么?

    1.setTimeout setTimeout(function(){ }),1000) setTimeout(function(num){ alert(num)    //弹123 },1000,1 ...

  8. ECOS-LNMP ZendGuard

    因为ECOS产品加密后依赖PHP Zendguard运行(基于PHP5.3加密)  备注: Shopex485商城基于php5.2进行加密 URL:http://www.zend.com/en/pro ...

  9. Atomic 升级

    Atomic 采用类似github的版本管理,  可以使用以下命令升级 ostree remote add --set=gpg-verify=false atomic20160212 http://. ...

  10. gvim窗口根据gnome-terminal位置定位

    gvim启动位置固定的话容易挡到东西,所以写了一段vimscript根据gnome-terminal的位置启动gvim,这样被遮住的概率就一些了. fun! g:get_xterm_pos ()&qu ...