sql查询优化

原创 2017年06月18日 14:23:18

浅析sql查询优化

开门见山,结合笔者工作中处理过的问题,以及前人的经验,总结几点有关sql查询优化时的注意问题。不完善之处还望多多指正。

一、 避免全表扫描
全表扫描往往是由索引失效造成,那么什么情况下会造成索引失效?
where字句中对字段进行运算或函数操作,where多子句的先后顺序(mysql自左向右来执行where字句)。n!=,<>, in, not in, or ,like 的使用,null 值判断。
当处理这些问题的时候,能避免以上用法,尽量避免。当然不是说要舍近求远,具体问题具体分析,视查询效率而定。

二、用什么取什么
多余的数据一个也不取,避免使用select * ,合理运用limit。

三、合理利用存储空间
能使用数字类型就不用字符类型,(引擎在处理查询和连接时会逐个比较字符串中每一个字符,而数字型只需比较一次);char和varchar,通常情况用varchar(char存储效率不如varchar,对于短数据的查询优于varchar。存储很短的信息、存储固定长度、频繁改变的column时,这三种情况宜用char)

四、重复运用的数据采用临时表
临时表慎用,适当使用可以使某些例程更有效,如,当需要重复引用大型表或常用表中的某个数据集时。但是,对于单次事件,最好使用导出表

五、日志产生
查询时产生的日志也会降低效率。创建临时表时,若一次性插入大量数据,那么可以通过 select into 代替 create table,避免造成大量 log ,以提高速度;如果数据量不大,为了缓和系统表的资源,应先create table,然后insert。

以上主要从sql方面考虑,提高查询效率还可以通过 将数据、日志、索引放到不同的I/O设备上,增加读取速度。数据量(尺寸)越大,提高I/O越重要。对数据表进行分割,减少表的尺寸。升级硬件,提高网速等。

版权声明:本文为博主原创,转载请注明出处(http://blog.csdn.net/jdjh1024).

相关文章推荐

j2me经验总结之事件处理

(源自:http://www.j2medev.com/Article/Class1/Class12/200802/5176.html)基于事件触发模型进行编程可以在有限程度内增加程序的灵活性以及可扩展...
  • njcit
  • njcit
  • 2010-09-15 16:59
  • 255

编程人生之思绪

曾几何时,听说了编程。曾几何时,知道了英文单词的他用。曾几何时,开始了编程。。。。几度春秋,几度起伏。偶然拾取,顿识点悟。------------自己的无知,自己的不足,自己的。。。时至今日,自己在编...

终生学习者,永远劳苦命!

好久没有写博客,最近为了基金从业的考试忙的不行不行的。近来公司要招聘一些高端的人才,自己面试了好多人,唯一让我感慨的是。好多人 都30好几了,还靠着投简历找工作,其中还不乏一些跨界找工作的人。你的优势...
  • yzzst
  • yzzst
  • 2017-07-16 22:13
  • 16790

warning C4150: 删除指向不完整“CBasexxx”类型的指针;没有调用析构函数

warning C4150 删除指向不完整“”类型的指针;没有调用析构函数,内存泄露
  • zzw315
  • zzw315
  • 2010-11-22 13:35
  • 3819

IT精英,必须掌握的命令

一,ping      它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:网络上的机器都...
  • phphot
  • phphot
  • 2009-06-30 20:18
  • 1206

【HDU】6043 - KazaQ's Socks(思维)

题目链接:点击打开题目这个写一串例子就知道规律了。代码如下:#include #include #include #include #include #include #include #includ...

让程序在崩溃时体面的退出之Unhandled Exception

《让程序在崩溃时体面的退出》系列文章的第一篇:怎样处理Unhandled Exception。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)