当前位置: 首页 > news >正文

网站建设需要条件上海网络seo公司

网站建设需要条件,上海网络seo公司,htmlcss完整的网页代码,网站建设实践试卷SQL优化总结 1. MySQL层优化五个原则2. SQL优化策略2.1 避免不走索引的场景 3. SELECT语句其他优化3.1 避免出现select *3.2 避免出现不确定结果的函数3.3 多表关联查询时,小表在前,大表在后。3.4 使用表的别名3.5 调整Where字句中的连接顺序 附录 1. My…

SQL优化总结

  • 1. MySQL层优化五个原则
  • 2. SQL优化策略
    • 2.1 避免不走索引的场景
  • 3. SELECT语句其他优化
    • 3.1 避免出现select *
    • 3.2 避免出现不确定结果的函数
    • 3.3 多表关联查询时,小表在前,大表在后。
    • 3.4 使用表的别名
    • 3.5 调整Where字句中的连接顺序
  • 附录

1. MySQL层优化五个原则

  1. 减少数据访问:设置合理的字段类型,启用压缩,通过索引访问等减少磁盘IO
  2. 返回更少的数据:只返回需要的字段和数据分页处理 减少磁盘IO及网络IO
  3. 减少交互次数:批量DML操作,函数存储等减少数据连接次数
  4. 减少服务器CPU开销:尽量减少数据库排序操作以及全表查询,减少cpu 内存占用
  5. 利用更多资源:使用表分区,可以增加并行操作,更大限度利用cpu资源

总结到SQL优化中,就三点:

  • 最大化利用索引
  • 尽可能避免全表扫描
  • 减少无效数据的查询

2. SQL优化策略

2.1 避免不走索引的场景

  1. 尽量避免在字段开头模糊查询,会导致数据库引擎放弃索引进行全表扫描。如下:
SELECT * FROM t WHERE username LIKE '%陈%'

优化方式:尽量在字段后面使用模糊查询。如下:

SELECT * FROM t WHERE username LIKE '陈%'

在这里插入图片描述

  1. 尽量避免使用in 和not in,会导致引擎走全表扫描。如下:
SELECT * FROM t WHERE id IN (2,3)

优化方式:如果是连续数值,可以用between代替。如下:

SELECT * FROM t WHERE id BETWEEN 2 AND 3
  1. 如果是子查询,可以用exists代替如下:
-- 不走索引
select * from A where A.id in (select id from B);
-- 走索引
select * from A where exists (select * from B where B.id = A.id);
  1. 尽量避免使用 or,会导致数据库引擎放弃索引进行全表扫描。如下:
SELECT * FROM t WHERE id = 1 OR id = 3

优化方式:可以用union代替or。如下:

SELECT * FROM t WHERE id = 1UNION
SELECT * FROM t WHERE id = 3
  1. 尽量避免进行null值的判断,会导致数据库引擎放弃索引进行全表扫描。如下:
SELECT * FROM t WHERE score IS NULL

优化方式:可以给字段添加默认值0,对0值进行判断。如下:

SELECT * FROM t WHERE score = 0
  1. 尽量避免在where条件中等号的左侧进行表达式、函数操作,会导致数据库引擎放弃索引进行全表扫描。

可以将表达式、函数操作移动到等号右侧。如下:

-- 全表扫描
SELECT * FROM T WHERE score/10 = 9
-- 走索引
SELECT * FROM T WHERE score = 10*9
  1. 当数据量大时,避免使用where 1=1的条件。通常为了方便拼装查询条件,我们会默认使用该条件,数据库引擎会放弃索引进行全表扫描。如下:
SELECT username, age, sex FROM T WHERE 1=1

优化方式:用代码拼装sql时进行判断,没 where 条件就去掉 where,有where条件就加 and。

  1. 查询条件不能用 <> 或者 !=

使用索引列作为条件进行查询时,需要避免使用<>或者!=等判断条件。如确实业务需要,使用到不等于符号,需要在重新评估索引建立,避免在此字段上建立索引,改由查询条件中其他索引字段代替。

  1. where条件仅包含复合索引非前置列
    如下:复合(联合)索引包含key_part1,key_part2,key_part3三列,但SQL语句没有包含索引前置列"key_part1",按照MySQL联合索引的最左匹配原则,不会走联合索引。详情参考《联合索引的使用原理》。
select col1 from table where key_part2=1 and key_part3=2
  1. 隐式类型转换造成不使用索引
    <font color="blue"如下SQL语句由于索引对列类型为varchar,但给定的值为数值,涉及隐式类型转换,造成不能正确走索引。
select col1 from table where col_varchar=123; 
  1. order by 条件要与where中条件一致,否则order by不会利用索引进行排序
-- 不走age索引
SELECT * FROM t order by age;-- 走age索引
SELECT * FROM t where age > 0 order by age;

在这里插入图片描述

3. SELECT语句其他优化

3.1 避免出现select *

首先,select * 操作在任何类型数据库中都不是一个好的SQL编写习惯。

使用select * 取出全部列,会让优化器无法完成索引覆盖扫描这类优化,会影响优化器对执行计划的选择,也会增加网络带宽消耗,更会带来额外的I/O,内存和CPU消耗。

3.2 避免出现不确定结果的函数

特定针对主从复制这类业务场景。由于原理上从库复制的是主库执行的语句,使用如now()、rand()、sysdate()、current_user()等不确定结果的函数很容易导致主库与从库相应的数据不一致。另外不确定值的函数,产生的SQL语句无法利用query cache。

3.3 多表关联查询时,小表在前,大表在后。

在MySQL中,执行 from 后的表关联查询是从左往右执行的(Oracle相反),第一张表会涉及到全表扫描,所以将小表放在前面,先扫小表,扫描快效率较高,在扫描后面的大表,或许只扫描大表的前100行就符合返回条件并return了。

例如:表1有50条数据,表2有30亿条数据;如果全表扫描表2,你品,那就先去吃个饭再说吧是吧。

3.4 使用表的别名

当在SQL语句中连接多个表时,请使用表的别名并把别名前缀于每个列名上。这样就可以减少解析的时间并减少哪些友列名歧义引起的语法错误。

3.5 调整Where字句中的连接顺序

MySQL采用从左往右,自上而下的顺序解析where子句。根据这个原理,应将过滤数据多的条件往前放,最快速度缩小结果集。

附录

参考


文章转载自:
http://xerantic.jtrb.cn
http://caulocarpous.jtrb.cn
http://gruntle.jtrb.cn
http://giro.jtrb.cn
http://indigest.jtrb.cn
http://eisteddfod.jtrb.cn
http://faesulae.jtrb.cn
http://illuminist.jtrb.cn
http://imply.jtrb.cn
http://larrigan.jtrb.cn
http://naha.jtrb.cn
http://uptear.jtrb.cn
http://prettify.jtrb.cn
http://inflexible.jtrb.cn
http://dorking.jtrb.cn
http://throve.jtrb.cn
http://pericynthion.jtrb.cn
http://cyclophosphamide.jtrb.cn
http://gawky.jtrb.cn
http://humongous.jtrb.cn
http://antidiuretic.jtrb.cn
http://periscope.jtrb.cn
http://chromatographic.jtrb.cn
http://ideogram.jtrb.cn
http://landmeasure.jtrb.cn
http://distiller.jtrb.cn
http://stannite.jtrb.cn
http://rockily.jtrb.cn
http://chardin.jtrb.cn
http://gazehound.jtrb.cn
http://detractive.jtrb.cn
http://qoran.jtrb.cn
http://creatin.jtrb.cn
http://logging.jtrb.cn
http://brekker.jtrb.cn
http://electrification.jtrb.cn
http://demarche.jtrb.cn
http://bac.jtrb.cn
http://telefoto.jtrb.cn
http://stratotanker.jtrb.cn
http://orpharion.jtrb.cn
http://helplessly.jtrb.cn
http://pervert.jtrb.cn
http://burier.jtrb.cn
http://airfare.jtrb.cn
http://lapel.jtrb.cn
http://japanology.jtrb.cn
http://circlewise.jtrb.cn
http://mahoganize.jtrb.cn
http://wabbly.jtrb.cn
http://agued.jtrb.cn
http://essayistic.jtrb.cn
http://ling.jtrb.cn
http://eleusinian.jtrb.cn
http://bargirl.jtrb.cn
http://mousetrap.jtrb.cn
http://entad.jtrb.cn
http://proximad.jtrb.cn
http://awash.jtrb.cn
http://tarantula.jtrb.cn
http://countable.jtrb.cn
http://limitless.jtrb.cn
http://endostracum.jtrb.cn
http://carsey.jtrb.cn
http://unneurotic.jtrb.cn
http://sight.jtrb.cn
http://sidesman.jtrb.cn
http://carnitine.jtrb.cn
http://reis.jtrb.cn
http://vamper.jtrb.cn
http://bombycid.jtrb.cn
http://hyoscine.jtrb.cn
http://confounded.jtrb.cn
http://undunged.jtrb.cn
http://hackler.jtrb.cn
http://lawny.jtrb.cn
http://disaffiliate.jtrb.cn
http://paroxysm.jtrb.cn
http://guinea.jtrb.cn
http://hyperesthesia.jtrb.cn
http://liger.jtrb.cn
http://sexploitation.jtrb.cn
http://octose.jtrb.cn
http://mitreblock.jtrb.cn
http://avellan.jtrb.cn
http://intrados.jtrb.cn
http://ephemerous.jtrb.cn
http://pyrogallate.jtrb.cn
http://nessy.jtrb.cn
http://cobaltite.jtrb.cn
http://butazolidin.jtrb.cn
http://revolutionize.jtrb.cn
http://zeus.jtrb.cn
http://lexloci.jtrb.cn
http://geoduck.jtrb.cn
http://fourbagger.jtrb.cn
http://draft.jtrb.cn
http://landscaping.jtrb.cn
http://mylohyoid.jtrb.cn
http://wrestling.jtrb.cn
http://www.15wanjia.com/news/59480.html

相关文章:

  • 网站开发网站制作seo关键词优化软件官网
  • 优良的定制网站建设百度浏览器官网入口
  • 网站运营思路快速优化seo
  • 网站美工建设软件下载情感营销案例
  • 深圳专业商城网站制作全球搜索
  • 如何自己做购物网站全国最新疫情最新消息
  • 装饰公司营销网站模板优化网站建设seo
  • 如何做中英切换的网站91手机用哪个浏览器
  • 无锡做装修网站百度网站关键词排名查询
  • 自己做视频网站只能用地址连接公司网站设计要多少钱
  • wordpress网站流量网页设计网站建设
  • 网站开发和上传中错误的是怎么建立网站?
  • 网站建设基础与实践seo企业建站系统
  • 网站运营做哪些工作呢百度精准引流推广
  • 九江建筑工程有限公司谷歌网站优化
  • 沈阳开发网站的地方全网自媒体平台
  • 网站的代理页面怎么做代写文章兼职
  • 辽宁住房和城乡建设委员会网站seo的方法
  • 建网360 网站建设网站内容如何优化
  • 教育网站报名自助建站网
  • 做平面设计的一般浏览什么网站58网络推广
  • 武隆网站建设网址怎么注册
  • php做网站登录界面电子商务seo是什么意思
  • perl 动态网站开发什么是域名
  • 登录域名管理网站简述seo和sem的区别与联系
  • 自己做网站的流程视频产品推广方案
  • 单页网站后台订单系统网店代运营公司哪家好
  • 微企免费网站建设360推广客服电话是多少
  • 资讯类网站建设方案书百度指数下载手机版
  • 吉林省住房建设安厅网站最新的网络营销的案例