博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql优化
阅读量:6188 次
发布时间:2019-06-21

本文共 1106 字,大约阅读时间需要 3 分钟。

1、尽量使用数字型字段

引擎在处理查询会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了;

2、尽量避免使用!=或<>、IS NULL或IS NOT NULL、IN ,NOT IN等这样的操作符.

因为这会使系统无法使用索引,而只能直接搜索表中的数据;

3、不要习惯性的使用 ‘%L%’这种方式(会导致全表扫描),如果可以使用`L%’相对来说更好;

4、能用UNION ALL就不要用UNION

UNION ALL不执行SELECT DISTINCT函数,这样就会减少很多不必要的资源,UNION ALL可以大大加快速度,如果你已经知道你的数据不会包括重复行,或者你不在乎是否会出现重复的行,在这两种情况下使用UNION ALL更适合。此外,还可以在应用程序逻辑中采用某些方法避免出现重复的行,这样UNION ALL和UNION返回的结果都是一样的,但UNION ALL不会进行排序。

5、避免使用NULL类型:NULL对于大多数数据库都需要特殊处理,MySQL也不例外,它需要更多的代码,更多的检查和特殊的索引逻辑

6、ORDER BY语句的MySQL优化:

a. ORDER BY + LIMIT组合的索引优化。如果一个SQL语句形如:

SELECT [column1],[column2],…. FROM [TABLE] ORDER BY [sort] LIMIT [offset],[LIMIT];

这个SQL语句优化比较简单,在[sort]这个栏位上建立索引即可。

b. WHERE + ORDER BY + LIMIT组合的索引优化,形如:

SELECT [column1],[column2],…. FROM [TABLE] WHERE [columnX] = [VALUE] ORDER BY [sort] LIMIT [offset],[LIMIT];

这个语句,如果你仍然采用第一个例子中建立索引的方法,虽然可以用到索引,但是效率不高。更高效的方法是建立一个联合索引(columnX,sort)

7、

尽量早过滤

  这一优化策略其实最常见于索引的优化设计中(将过滤性更好的字段放得更靠前)。

  在 SQL 编写中同样可以使用这一原则来优化一些 Join 的 SQL。比如我们在多个表进行分页数据查询的时候,我们最好是能够在一个表上先过滤好数据分好页,然后再用分好页的结果集与另外的表 Join,这样可以尽可能多的减少不必要的 IO 操作,大大节省 IO 操作所消耗的时间。

转载于:https://www.cnblogs.com/chenpi/p/5381426.html

你可能感兴趣的文章
oracle 10g如何关闭和打开自动收集统计信息
查看>>
第二章--(第九单元)--vsftpd服务
查看>>
JQUERY失去焦点时验证多个表单
查看>>
2012.6.11
查看>>
判断本地是否存在Jquery文件,如果不存在则使用CDN加速的Jquery文件
查看>>
《QoS在IOS中的实现与应用》再版
查看>>
在VM中Centos6.8如何手动挂载U盘
查看>>
软件工程院校排名
查看>>
Excle 创建下拉列表
查看>>
SSH原理之图文详解
查看>>
yum的repo文件详解、以及epel简介、yum源的更换
查看>>
第 三 十 九 天:更 换 yum 源 和 卸 载 图 形 界 面
查看>>
flask-uploads扩展的使用
查看>>
BZOJ4602:[SDOI2016]齿轮(并查集)
查看>>
[ZJOI2014]力【FFT】
查看>>
SQL Server 无法连接到服务器。SQL Server 复制需要有实际的服务器名称才能连接到服务器。请指定实际的服务器名称。...
查看>>
CQL
查看>>
yii框架AR详解
查看>>
c++引用
查看>>
wcf 使用介绍
查看>>