在项目中,写的sql主要以查询为主,但是数据量一大,就会突出sql性能优化的重要性。其实在数据量2000W以内,可以考虑索引,但超过2000W了,就要考虑分库分表这些了。本文主要记录在实际项目中,一个需要查询很慢的sql的优化过程,如果有更好的方案,请在下面留言交流。 很多文章都有关于sql优化的方 ...
分类:
数据库 时间:
2019-12-01 09:38:59
阅读次数:
96
1、尽量避免全表查询,首先考虑在 where 及 order by 涉及的列上建立索引 2、尽量避免在 where 子句中只用!=或<>操作符,否则将导致引擎放弃使用索引而进行全表扫描 3、尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: s ...
分类:
数据库 时间:
2019-11-25 13:10:21
阅读次数:
74
1.负向条件查询不能使用索引 也就是不等于之类的负向条件,可以优化为in查询 记住, 索引只能告诉你什么存在于表中, 而不能告诉你什么不存在于表中。 2.前导模糊查询不能使用索引,将进行全表扫描,非前导模糊查询则可以使用索引 例如:select from student where name lik ...
分类:
数据库 时间:
2019-11-25 11:35:27
阅读次数:
71
1.在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描, 这都可以通过explain命令来查看。所以我们深入了解My ...
分类:
数据库 时间:
2019-11-21 17:21:52
阅读次数:
69
1.尽量避免在where子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描 2.应尽量避免在where子句中字段null值判断,否则将导致引擎放弃使用索引而进行全表扫面 3.很多时候用exists代替in是一个好的选择 4.用where子句替换having子句,因为having只会在检 ...
分类:
数据库 时间:
2019-11-19 14:01:53
阅读次数:
72
[TOC]一、Elasticsearch概述1.1什么是搜索?搜索,就是在任何场景下,找寻想要的信息。通过关键字检索出与此关键字有关的信息。这和查询还不太一样,查询通常是在表格类型的数据中查找,字段的内容的长度往往不大。1.2使用传统数据库实现搜索?传统数据库的情况下,如果要查询某个字段是否包含某些关键字的话,需要使用到like关键字来进行字段匹配,很大概率导致全表扫描,本身来说性能就不算好。如果
分类:
其他好文 时间:
2019-11-18 09:27:37
阅读次数:
151
首先,数据量大的时候,应尽量避免全表扫描,应考虑在 where 及 order by 涉及的列上建立索引,建索引可以大大加快数据的检索速度。但是,有些情况索引是不会起效的: 1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 2、应尽量避免在 where ...
分类:
数据库 时间:
2019-11-14 18:11:00
阅读次数:
76
[TOC] MySQL explain用法 一、explain命令应用 查询数据的方式 1.全表扫描 1)在explain语句结果中type为ALL 2)什么时候出现全表扫描? 2.1 业务确实要获取所有数据 2.2 不走索引导致的全表扫描 ? 2.2.1 没索引 ? 2.2.2 索引创建有问题 ? ...
分类:
数据库 时间:
2019-11-11 00:15:48
阅读次数:
115
在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结一些方法,供大家参考。 01 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 02 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使 ...
分类:
数据库 时间:
2019-11-07 15:20:30
阅读次数:
112