优化服务器网站,优化服务器网站是什么
大家好,今天小编关注到一个比较有意思的话题,就是关于优化服务器网站的问题,于是小编就整理了2个相关介绍优化服务器网站的解答,让我们一起看看吧。
如何通过优化sql语句提高数据库查询效率?
我来说说我日常的语句优化,日常大家都是本着完成客户的需求进行编写语句,但是如果一个运行中的Job速度比较慢的话,会导致系统卡死,无响应等情况产生,所以就需要有优化!
1.SELECT子句中避免使用'*':查询的时候最好是不要使用*号 比如你这表列特别多的话会导致查询速度慢,耗费更多的时间
2.EXISTS替代IN 用NOT EXISTS替代NOT IN:EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False.EXISTS 指定一个子查询,检测 行 的存在,返回值是一个BOOL值
IN:子查询先产生结果集,然后主查询再去结果集里去找符合要求的字段列表去.符合要求的输出,反之则不输出.
3.能走索引的走索引:要看执行计划,走什么索引要根据数据量进行分析
4.我感觉分区也是一周优化查询效率的方法
嘻嘻~暂时只能想到这么多,菜鸟一枚!!ヾ(✿゚▽゚)ノ
1.正确的创建合适的索引是提成生数据库查询的基础。
2.索引是为了加速对表中数据行的检索而创建的一种分散存储的数据数据结构。如图以mysql(innodb引擎)为例
3.为什么要用索引?
a.索引能极大的减少存储引擎需要扫描的数据量。
b.索引可以把随机IO变成顺序IO。
c.索引可以帮助我们在进行分组、排序等操作时,避免使用临时表。
4.sql前面加上 explain select Column Name1,Column Name2,Column Name3 from table;
排查是否走索引依次从好到差:system,const,eq_ref,ref,fulltext,ref_or_null,unique_subquery,index_subquery,range,index_merge,index,ALL。
5.索引注意要点
SQL数据库如何优化?
之前在BAT里参与过一个公司级应用(非市场级,投入的人力也不会那么大),上线2年后,总是被用户投诉,原因是这个应用使用MySql数据库来做持久层,但是2年了,有一张非常重要的存储历史任务的表实在是太大了,导致通过页面想要查询历史数据的速度变得非常非常慢,所以用户很是不满意。
分析下来,这不是用Redis能解决的缓存问题,而是历史数据的查询响应速度问题。
我们最开始是希望能够通过增加索引的方式解决,但是面对千万级别的数据量,我们也不敢贸然加索引,因为一旦数据库hang住,期间的所有数据库写入请求都会被放到等待队列中,如果请求是通过http请求发过来的,很有可能导致服务发生分钟级别的超时不响应。
虽然经常被用户投诉反应慢,也不能破罐破摔,直接超时不响应了吧。
于是我们陷入了两难的境地。
后来我们分了两个部分来优化持久层。
第一步就是配置MySQL的主从库,通过将读写请求分离,来提高数据库的响应速度。
从上图可知,来自同一台服务器的请求,经过MySQL-proxy被分流给了不同的MySQL节点,其中写请求给了主节点,读请求给了从节点。因此,我们首先通过分流的方式,减轻了单节点MySQL的响应压力,实现了优化的第一步。
但是,只配置MySQL的主从是远远不够的。
面试的时候经常会文档一些SQL方面的问题,比较常见的面试题例如“什么时候回造成索引失效?”,又或者“你经常做的SQL优化的工作有哪些?”
下面,我就介绍几个有关SQL优化的知识点。
负向条件查询不能使用索引:包括!=、not in、not exists都尽量不要使用;
%在前面的模糊查询:where name like '%xxx';
等号左边有函数:where upper(str) = '...',就算str字段有索引,这个写法也不会走索引;
数据区分度不大的字段,不要建索引:例如性别男、女、为止,这种就不适合建立索引;
隐式转换:where tel = 13800000000,如果tel字段是varchar类型,这个写法不会报错,但是会索引失效;
只返回需要的数据:select name,gender from users 优于 select * from users;
到此,以上就是小编对于优化服务器网站的问题就介绍到这了,希望介绍关于优化服务器网站的2点解答对大家有用。