青岛SEO优化将网站关键词排名推广到百度快照第1页
152-1580-3335

网站推广、网站建设专家!

专业、务实、高效

联 系

您现在的位置:青岛网站优化 > 网站SEO信息 > 一次十分故意思的 SQL SEO阅历

一次十分故意思的 SQL SEO阅历

一次十分故意思的 SQL SEO阅历

场景

我用的数据库是mysql5.6,上面简朴的引见了局景。

文/风过无痕-唐

课程表

create table Course(

c_id
int PRIMARY KEY,

name
varchar(10)

)

数据100条

教死表:

create table Student(

id
int PRIMARY KEY,name varchar(10)
)

数据70000条

教死成就表SC

CREATE table SC(
sc_id
int PRIMARY KEY,
s_id
int,
c_id
int,
score
int
)

数据70w条

查询目标:

查找语文考100分的考死

查询语句:

select s.* from Student s 
where
s.s_id in (select s_id from SC sc where sc.c_id = 0 and sc.score = 100 )

施行工夫:30248.271s

晕,为何那么缓,先去检察下查询方案:

EXPLAIN select s.* from Student s where s.s_id in (select s_id from SC sc where sc.c_id = 0 and sc.score = 100 )

发明出有效到索引,type齐是ALL,那么尾先念到的便是成立一个索引,成立索引的字段固然是正在where前提的字段。

先给sc表的c_id战score建个索引

CREATE index sc_c_id_index on SC(c_id);
CREATE index sc_score_index on SC(score);

再次施行上述查询语句,工夫为: 1.054s

快了3w多倍,年夜年夜收缩了查询工夫,看去索引能极年夜水平的进步查询服从,建索引很有须要,许多时分皆遗忘建

索引了,数据量小的的时分压根出觉得,那SEO的觉得挺爽。

可是1s的工夫借是太少了,借能停止优化吗,认真看施行方案:

检察优化后的sql:

SELECT

`YSB`.`s`.`s_id` AS `s_id`,
`YSB`.`s`.`name`
AS `name`

FROM

`YSB`.`Student` `s`
WHERE

< in_optimizer > (
`YSB`.`s`.`s_id` ,
< EXISTS > (
SELECT
1
FROM
`YSB`.`SC` `sc`
WHERE

(
(`YSB`.`sc`.`c_id`
= 0)
AND (`YSB`.`sc`.`score` = 100)
AND (
< CACHE > (`YSB`.`s`.`s_id`) = `YSB`.`sc`.`s_id`
)
)
)
)

弥补:那里有网友问怎样检察优化后的语句

办法以下:

正在号令窗心施行

有type=all

根据我之前的念法,该sql的施行的次第该当是先施行子查询

select s_id from SC sc where sc.c_id = 0 and sc.score = 100

耗时:0.001s

获得以下成果:

然后再施行

select s.* from Student s where s.s_id in(7,29,5000)

耗时:0.001s

那样便是相称快了啊,Mysql居然没有是先施行里层的查询,而是将sql优化成了exists子句,并呈现了EPENDENT SUBQUERY,

mysql是先施行中层查询,再施行里层的查询,那样便要轮回70007*8次。

那么改用毗连查询呢?

SELECT s.* from 

Student s


INNER
JOIN SC sc

on
sc.s_id = s.s_id

where
sc.c_id=0 and sc.score=100

那里为了从头阐发毗连查询的状况,先临时删除索引sc_c_id_index,sc_score_index

施行工夫是:0.057s

服从有所进步,看看施行方案:

那里有连表的状况呈现,我料想是否是要给sc表的s_id成立个索引

CREATE index sc_s_id_index on SC(s_id);

show index from SC

正在施行毗连查询

工夫: 1.076s,居然工夫借变少了,甚么本果?检察施行方案:

优化后的查询语句为:

SELECT
`YSB`.`s`.`s_id`
AS `s_id`,
`YSB`.`s`.`name`
AS `name`FROM
`YSB`.`Student` `s`
JOIN `YSB`.`SC` `sc`
WHERE

(
(
`YSB`.`sc`.`s_id`
= `YSB`.`s`.`s_id`
)
AND (`YSB`.`sc`.`score` = 100)
AND (`YSB`.`sc`.`c_id` = 0)
)

貌似是先做的毗连查询,再停止的where前提过滤

回到前里的施行方案:

那里是先做的where前提过滤,再做连表,施行方案借没有是牢固的,那么我们先看下尺度的sql施行次第:

一般状况下是先join再停止where过滤,可是我们那里的状况,假如先join,将会有70w条数据收收join做操,因而先施行where

注:相干网站建立本领浏览请移步到建站教程频讲。

 

您可以通过以下方式在线洽谈:
网站策划 营销推广 投诉建议

相关信息

网站优化中Nofollow标签的怎样准确的办法利用? 网站优化中Nofollow标签的怎样准确
明天去道道网站优化手艺之nofollow标签利用,我为何要收那篇专文?您可
有权重的文章便是如何的? 有权重的文章便是如何的?
正在网站优化中,最多见的一种优化标的目的便是写本创文章,经由过程文
三周内删减千条中链之我的理论心得 三周内删减千条中链之我的理论心得
10. 不竭的搜集能够收收中链的处所,并用电子文档的情势贮存。以便于下
真例阐发网站正在百度谷歌天然排名第优化的经历 真例阐发网站正在百度谷歌天然排名
1、 现搜索引擎优化的资本:搜索引擎优化是优化枢纽词资本的时期,您开
面临搜刮引擎算法的调解我们怎样去做中链 面临搜刮引擎算法的调解我们怎样去
第十两:网站导航 正所谓:内容为王,中链为皇,排名是排名么多年下去
SEO分享:小站重于排名 网站优化站重于内容 SEO分享:小站重于排名 网站优化站
如今许多网站皆正在做SEO,果为SEO能给网站带去更多的目的流量,比拟较
浅道搜索引擎优化新脚生长必经要面临的成绩 浅道搜索引擎优化新脚生长必经要面
搜索引擎优化生长我以为最为主要的是正在理论中考虑,百度样才气实正的
用Marketing Samurai去拔取SEO枢纽词 用Marketing Samurai去拔取SEO枢纽
登录/注册后可看年夜图 搜索引擎优化fuwu6736171611481.png (47.48 KB,
沧州SEO优化的相干人士对搜索引擎优化如今的格式有甚么独到的睹 沧州SEO优化的相干人士对搜索引擎
对SEO的深化理解,,,
谷歌阐发GA中小企业必备10网站优化要面 谷歌阐发GA中小企业必备10网站优化
登录/注册后可看年夜图 搜索引擎优化fuwu483301103561.png (66.89 KB,