北京搜索搜索引擎索引引擎优化(搜索引擎优化搜索引擎排名优化)

前沿拓展:

北京搜索搜索引擎索引引擎优化

我的经验是,大量的相关文章+合理的站内链接+稳定的更新频率。

 如何做好seo优化策略可参考如下方法:

  在搜索引擎优化中,SEO策略影响到最终的优化效果。SEO策略不管对中小网站还是大型网站都是重要的,而对于大型网站,制定一个好的SEO策略尤为重要。

  第一部分:关键词分析

  关键词分析是所有SEO必须掌握的一门功课,大型网站虽然有海量的数据,但是每个页面都需要进行关键词分析,除了SEO之外,策划、编辑也需要具备一定的关键词分析能力。

  关键词分析的基本原则:

  1、 调查用户的搜索习惯:这是一个重要的方面,只有了解用户的搜索习惯,才能把我用户的搜索需求,用户喜欢搜索什么?用什么搜索引擎?等等

  2、 关键词不能过于宽泛:关键词过于宽泛会导致竞争激烈,耗费大量时间却不一定得到想要的效果,并且可能降低了关键词的相关性。

  3、 关键词不能过冷:想想,没有用户搜索的关键词,还值得去优化吗?

  4、 关键词要与页面内容保持高度的相关性:这样既有利于优化又有利于用户。

  关键词挑选的步骤:

  1、 确定核心关键词:我们应该考虑的是哪一个词或者两个词能够最准确的描述网页的内容?哪一个词用户搜索次数最多?

  2、 核心关键词定义上的扩展:例如核心关键词的别名、仅次于核心关键词的组合等、核心关键词的辅助等。

  3、 模拟用户思维设计关键词:把自己假想为用户,那么我会去搜索什么关键词呢?

  4、 研究竞争者的关键词:分析一下排名占有优势的竞争对手的网页,他们都使用了什么关键词?

  第二部分:页面逆向优化

  为什么要做逆向优化?因为在大型网站中,页面的优化价值一般不同于中小网站。考虑到各种综合因素(例如品牌、页面内容、用户体验等),大型网站的页面优化价值大多数呈现逆向顺序,即:最终页>专题页>栏目页>频道页>首页。

  如何针对各页面进行关键词分配呢?通常情况是这样的:

  1、 最终页:针对长尾关键词;

  2、 专题页:针对热门关键词,例如"周杰伦";

  3、 栏目页:针对固定关键词,例如"音乐试听";

  4、 频道页:针对核心关键词,例如 "音乐";

  5、 首页:不分配关键词,而是以品牌为主。

  在进行关键词分配后,我们可以在最终页中添加匹配的内链作为辅助,这是大型网站内链的优势。

  第三部分:前端搜索引擎友好,包括UI设计的搜索友好和前端代码的搜索友好两点

  1、首先来看UI设计的搜索引擎友好:主要是做到导航清晰,以及flash和图片等的使用,一般来说,导航以及带有关键词的部分不适合使用flash及图片,因为大多数搜索引擎无法抓取flash及图片中的文字。

  2、然后是前端代码的搜索引擎友好:

  a、代码的简洁性:搜索引擎喜欢简洁的html代码,这样更有利于分析。

  b、重要信息靠前:指带关键词的及经常更新的信息尽量选择出现在html的靠前位置。

  c、过滤干扰信息:大型网站的页面一般比较复杂,各种广告、合作、交换内容以及其他没有相关性的信息比较多,我们应该选择使用js、iframe等搜索引擎无法识别的代码过滤掉这一部分信息。

  d、代码的基础SEO:这是基础的SEO工作,避免html错误以及语义化标签。

  第四部分:内部链接策略

  为什么要强调内部链接策略?因为内链具有以下优势:

  1、 大型网站海量的数据使内链的优势远远大于外链。外链的数量可能几千几万几十万,但是大型网站拥有成百万上千万甚至上亿的海量网页内容,如果用这些海量的网页做内链的建设,优势是很明显的。

  2、 网站内的网页间导出链接是一件很容易的事情。

  3、 提高搜索引擎对网站的爬行索引效率,增强收录,也有利于PR的传递。

  4、 集中主题,使该主题的关键词在搜索引擎中具有排名优势。

  在内链建设中,应该遵循以下原则:1、控制文章内链数量:穿插于文章内的链接可以根据内容的多少控制在3-8个左右。2、链接对象的相关性要高。3、给重要的网页更多的关注:使重要的更有关键词价值的网页得到更好的排名。4、使用绝对路径。

  第五部分:外部链接策略

  在强调大型网站的内链建设的同时也不能太忽视了外链的建设。外链的建设虽然没有中小网站那么重要,但是也具有很高的价值。通常可以通过交换链接、制造链接诱饵、投放带链接的软文等方法来建设外链。

  1、 来看交换链接应该要遵循哪些原则:

  a、链接文字中包含关键词;b、尽量与相关性高的站点、频道交换链接;c、对方网站导出链接数量不能过多,过多的话没有太大的价值;d、避免与未被收录以及被搜索引擎惩罚的网站交换链接

  2、 制造链接诱饵:制造链接诱饵是一件省力的工作,这使得对方网站主动的为我们添加链接。制造链接诱饵的技巧很多,但是可以用两个字来概括:创意。

  3、 带链接的软文投放。指的是在商务推广或者为专门为了得到外链而进行的带链接的软文投放。

  第六部分:网站地图策略

  有很多大型网站不重视网站地图的建设,不少大型网站的网站地图只是敷衍了事,做一个摆设。其实网站对于大型网站是很重要的,大型网站海量的数据、复杂的网站导航结构、极快的更新频率使得搜索引擎并不能完全抓取所有的网页。这就是为什么有的大型网站拥有百万千万甚至上亿级的数据量,但是却只被搜索引擎收录了网站数据量的一半、三分之一甚至更少的一个重要原因。连收录都保证不了,怎么去做排名?

  Html地图:

  1、 为搜索引擎建立一个良好的导航结构。

  2、 Html地图中可以分为横向和纵向导航,横向导航主要是频道、栏目、专题等链接,纵向导航主要是针对关键词。

  3、 每个页面都有指向网站地图的链接。

  Xml网站地图:主要针对Google、yahoo、live等搜索引擎。因为大型网站数据量太大,单个的sitemap会导致sitemap.xml文件太大,超过搜索引擎的容忍度。所以我们要将sitemap.xml拆分为数个,每个拆分后的sitemap.xml则保持在搜索引擎建议的范围内。

  第七部分:搜索引擎友好写作策略

  搜索引擎友好写作是创造海量数据对取得好的搜索引擎排名的很关键的一部分。而SEO人员不可能针对每个网页都提出SEO建议或者方案,所以对写作人员的培训尤为重要。如果所有写作人员都按照搜索引擎友好的原则去写作,则产生的效果是很恐怖的。

  1、 对写作人员要进行反复培训:写作人员不是SEO,没有经验,不可能一遍就领悟SEO的写作技巧。所以要对写作人员进行反复的培训才能达到效果。

  2、 创造内容先思考用户会去搜索什么,针对用户的搜索需求而写作。

  3、 重视title、meta写作:例如Meta虽然在搜索引擎的权重已经很低,但是不好的meta写作例如堆积关键词、关键词与内容不相关等行为反而会产生负作用。而Title的权重较高,尽量在Title中融入关键词。

  4、 内容与关键词的融合:在内容中要适当的融入关键词,使关键词出现在适当的位置,并保持适当的关键词密度。

  5、 为关键词加入链接很重要:为相关关键词加入链接,或者为本网页出现的其他网页的关键词加入链接,可以很好的利用内链优势。

  6、 为关键词使用语义化标签:

  第八部分:日志分析与数据挖掘

  日志分析与数据挖掘常常被我们所忽视,其实不管是大型网站还是中小网站,都是一件很有意义的工作。只是大型网站的日志分析和数据挖掘工作难度要更高一些,因为数据量实在太大,所以我们要具备足够的耐心来做该项工作,并且要有的放矢。

  1、 网站日志分析:网站日志分析的的种类有很多,如访问来源、浏览器、客户端屏幕大小、入口、跳出率、PV等。跟SEO工作最相关的主要有以下三种:a、搜索引擎流量导入;b、搜索引擎关键词分析;c、用户搜索行为统计分析

  2、 热点数据挖掘:我们可以通过自身的网站日志分析以及一些外在的工具和SEO自己对热点的把握能力来进行热点数据的挖掘。热点数据的挖掘主要有以下手段:a、把握行业热点,可以由编辑与SEO共同完成;b、预测潜在热点,对信息的敏感度要求较高,能够预测潜在的热门信息。c、自己创造热点,如炒作等;d、 为热点制作专题

  第九部分:为关键词创作专题

  除了最终页面,各种针对热门的关键词所制作的专题应该作为网站的第二大搜索引擎流量来源。我们在对热点数据进行挖掘后,就可以针对这些热门关键词制作专题了。制作的专题页的内容从何而来?我们一般通过程序实现对应关键词相关的信息进行筛选聚合,这样就使得内容与关键词高度匹配,为用户、为搜索引擎都提供了所需要的内容。

  当然,仅仅建立一个专题而没有辅助手段是很难保证专题的搜索引擎排名的,我们可以通过文章内链、频道页推荐、或者最终页的专题推荐来获得链接达到效果。

  1、为热点关键词制作专题

  2、关键词相关信息的聚合

  3、辅以文章内链导入链接


不管对MySQL学习打算浅尝即止,还是打算深入研究,相信都是对这部分内容最感兴趣的。这是与应用设计、开发与实施有着最直接关系的一个模块。

这里说个题外话,在很多公司里,我们开发往往是无法掌权数据库管理的生杀大权的,索引的设计与创建一般掌控在项目经理和dba手中(稍微大点的团队中新手开发人员一般人数不少,暴露权限确实可能会建的乱七八糟)。不过,事实上开发参加索引的建立是能让索引更加符合逻辑的,毕竟一般情况下开发才是离代码逻辑、sql语句设计距离最近的人。

因此对于索引的建立、sql的优化,是开发人员必不可少的技能,一般我们设计索引、优化sql按照下面这个思维顺序进行

1、尽量使用主键查询

上一篇B+树索引的结构可以直观的发现,主键查询是可以避免回表的,一次查询搞定,速度肯定最快。所谓回表,说的是辅助索引查询时,一般是在辅助索引B+树找到该数据的关联主键,然后再在聚集索引树上查找对应数据,这将导致多了将近一倍的IO次数。

2、考虑使用覆盖索引

覆盖查询同样也是避免回表的一种操作,因为需要的数据列在辅助索引树上都能取到,因此在辅助索引树得到目标行后,不需要回到聚集索引树查询。像一般管理系统的分页查询一般是展示用户所需的摘要信息列表,一般这里可以考虑将所有被查询列和查询条件设计为联合索引。提速效果和主键查询一致。但是联合索引并非没有限制,我们可以先来看看简单的联合索引结构:

深挖MySQL——索引结构与优化(三)索引的设计与优化

可以看到联合索引树的键值是所有索引列组成的,所以要注意避免总占用字节数过多,导致树深度太大。第二个要注意的则是联合索引的最左匹配原则。

3、注意联合索引的最左匹配原则

根据联合索引树可以看到,B+树是根据最左边的索引来做大方向上的B+树的key构建的:根据最左边的列排序,最左列值一致的根据第二个列排序,依此类推。因此查询条件一定要带上最左边的列,联合索引才会被使用

4、开启索引下推

索引下推是MySQL5.6添加的,用于优化数据查询。默认是开启状态的,我们要做的只是不要手贱去关闭它。下面是在“初识MySQL”篇MySQL的结构图简略版,我们简单的回顾下来了解索引下推的原理:

深挖MySQL——索引结构与优化(三)索引的设计与优化

sql查询时,请求从客户端=>后台服务层=>存储引擎,存储引擎层将数据返回到server层,然后到客户端。在没有索引下推的时候,使用联合索引的列做条件查询时,根据最左原则是只会用最左边的索引查询出数据的聚集索引,然后回表扫描整行数据返回给服务server层,最后再根据其它条件筛选。而使用了索引下推之后,会直接根据索引的信息在联合索引树中筛选好数据返回。减少了大量的回表的次数,从而提升效率。

5、索引列的选择

对于索引列的选择,除了上篇博文提到的,过大的列不会被考虑在内外,值范围太小的列也是不会被考虑建立索引的,比方说:sex性别,一般情况下,系统的性别是只有男/女两个取值的,联想一下B+树的结构也能想的出来,这种索引建了是没什么意义的(还会让数据库多维护一个没有意义的B+树)。当你无法预估一个列的值范围时,可以使用命令show index from ‘表名’显示的cardnality列来计算,当cardnality÷行数的值越接近1,值范围便越大。

6、使用查询计划观察、调整(索引失效问题)

索引并不是说建立了,sql语句上用到了,真实查询的时候就会使用的。MySQL有一个叫做优化器的东西来主动判断是否使用哪些索引:比方说,如果有更小的辅助索引出现,执行select count(*) from ‘表明’时,如果有更小的辅助索引,优化器可能不会去使用聚集索引来做统计操作。

因此,判断一个sql的好坏不能全凭主观的臆想推论,需要借助查询计划来用数据来说话。一般想使用查询计划可以在select语句前加上explain关键字,或者在客户端如navicat上右键sql语句,点击查询计划查看。下面来看看查询字段各列的含义:

深挖MySQL——索引结构与优化(三)索引的设计与优化

id:select查询的序列号,包含三种情况

1、id相同时,从上往下执行;2、id不同时,值越大优先级越高;3、相同不同都有时,值越大优先级越高,相同id的语句从上往下执行

select_type:查询的类型,主要是用于区分普通查询、联合查询、子查询等复杂的查询

SIMPLE 简单的select查询,查询中不包含子查询或者union PRIMARY 查询中包含任何复杂的子部分,最外层查询则被标记为primary SUBQUERY 在select 或 where列表中包含了子查询 DERIVED 在from列表中包含的子查询被标记为derived(衍生),mysql或递归执行这些子查询,把结果放在临时表里 UNION select出现在union之后,则被标记为union;union包含在from子句的子查询中,union前面的select由primary变成drived UNION RESULT 从union表获取结果的select

table:表名,当有别名时显示别名

partitions:查询将用到的分区,非分区表显示null

type:访问类型,sql查询优化中一个很重要的指标

结果值从好到坏依次是:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL;一般来说,好的sql查询至少达到range级别,最好能达到ref,对每个类型的具体解释看官网:https://dev.mysql.com/doc/refman/5.7/en/explain-output.html#explain-extra-information这个真的要看看(过一遍),比较重要,官网上有枚举说明和sql对应的案例

possible_keys:可能用到的索引

keys:实际上用到的索引,查询优化器会判断有没有需要使用索引的必要

key_len:索引中使用的字节数

查询中使用的索引的长度(最大可能长度),并非实际使用长度,理论上长度越短越好。长度是根据表定义计算而得的,不是通过表内检索出的

ref:与索引比较的列

rows:要查询的行数的预估值

filtered:按表条件过滤的行百分比

extra:附加信息

这也是很重要的一列信息,查询是否很慢往往可以参考这里,常出现的有:

Using filesort 无法利用索引完成排序,将查询结果是哦那个“文件排序” Using temporary 使用临时表保存中间结果,也就是说mysql在对查询结果排序时使用了临时表,常见于order by 和 group by Using index 表示相应的select操作中使用了覆盖索引(Covering Index),避免了访问表的数据行,效率高 如果同时出现Using where,表明索引被用来执行索引键值的查找如果没用同时出现Using where,表明索引用来读取数据而非执行查找动作Using where 使用了where过滤Using join buffer (Block Nested Loop),Using join buffer (Batched Key Access) 来自早期连接的表被分部分读入连接缓冲区,然后它们的行从缓冲区中用于执行与当前表的连接Impossible WHERE where子句的值总是false,不能用来获取任何元祖distinct 优化distinct操作,在找到第一个匹配的元祖后即停止找同样值得动作

具体出现的各个情况及含义可以查看官网:MySQL :: MySQL 5.7 Reference Manual :: 8.8.2 EXPLAIN Output Format

7、优秀的sql结构

很显然优秀的sql结构是对多表查询来说的,单表查询直来直去,不存在什么优秀的sql结构。多表查询分为连接查询和子查询两种方式,所谓连接查询,本质上就是在多个表的笛卡尔积里面查询数据;而子查询是将内层的查询结果当作外层查询的参数,本质上也可以当作多个表的笛卡尔积里查询结果。

子查询分为select/where后跟着的select和from后面跟着的select;连接查询分为内连接inner join、左/右连接left join和全连接(union配合left join实现)查询。这意味着一个查询逻辑的实现可以有多种方法。而不同的方法孰优孰劣是由优化器层层算法决定的,不同的数据量和表设计下,千万不能迷信大部分博文说的那样哪种查询一定比另一种方式的效率高(我看过一些确实连接查询效率高的概率大一些,但是不同的业务案例是无法放在一起比较的,就像你无法用你的城市的平均工资去衡量另一个城市的平均工资一样)。若要真正比较,务必还是要查看执行计划来观察比较

下面我么们建两张字段相同含有id(primaryKey), name(index), age的表,各自插入10万测试数据,看看不同方式的关联查询效率有什么区别:

1、普通连接查询

深挖MySQL——索引结构与优化(三)索引的设计与优化

深挖MySQL——索引结构与优化(三)索引的设计与优化

2、内连接查询

深挖MySQL——索引结构与优化(三)索引的设计与优化

深挖MySQL——索引结构与优化(三)索引的设计与优化

3、左连接查询

深挖MySQL——索引结构与优化(三)索引的设计与优化

深挖MySQL——索引结构与优化(三)索引的设计与优化

4、全连接查询(伪全连接,由left join和union合作完成)

深挖MySQL——索引结构与优化(三)索引的设计与优化

深挖MySQL——索引结构与优化(三)索引的设计与优化

5、子查询(在where)

深挖MySQL——索引结构与优化(三)索引的设计与优化

深挖MySQL——索引结构与优化(三)索引的设计与优化

6、子查询(在select)

深挖MySQL——索引结构与优化(三)索引的设计与优化

深挖MySQL——索引结构与优化(三)索引的设计与优化

7、子查询(在from)+全连接,这个故意写的复杂些

深挖MySQL——索引结构与优化(三)索引的设计与优化

深挖MySQL——索引结构与优化(三)索引的设计与优化

​可以看到,上面查询的结果基本上是一致的,此中除了4、全连接查询和7、故意写复杂的查询外,其它效率基本是一致的。甚至符合业务的情况下5、子查询由于id=1的查询type为const,效率最高。这里并不是要给各种查询效率做排序,只是证明不要迷信网络所说的某某查询效率一定快,不同的业务要求下、不同的数据量下,个终查询效率的快慢并非是有固定排名的,要比较的话一定要自己观察查询计划来调整、优化。

如有错误,敬请斧正;欢迎转载,但请务必注明出处;最后,在此向神奇的海螺保证,绝不太监!!!

拓展知识:

北京搜索搜索引擎索引引擎优化

SEO原理

其实搜索引擎做的工作是相当复杂的,我们这里简单说一下大致的过程。

1.页面抓取: 蜘蛛向服务器请求页面,获取页面内容

2.分析入库:对获取到的内容进行分析,对优质页面进行收录

3.检索排序:当用户检索关键词时,从收录的页面中按照一定的规则进行排序,并返回给用户结果

SEO优化

既然是优化,那我们就得遵循SEO的原理来做,可谓知己知彼,百战不殆。针对上面提出的三点,我们分别展开叙述。我们这里主要以百度蜘蛛举例。

页面抓取

如何才能吸引蜘蛛光顾我们的网站,如何才能让蜘蛛经常光顾我们的网站。这里提出以下几个优化点:

提交页面。提交页面又分为几种不同的方式

sitemap提交。sitemap,顾名思义,就是网站地图,当蜘蛛来到我们的网站时,告诉它我们有多少页面,不同页面是按什么分类的,每个页面的地址是什么。顺着我们的指引,蜘蛛会很轻松的爬遍所有内容。另外,如果你的页面分类比较多,而且数量大,建议添加sitemap索引文件。如果站点经常更新添加新页面,建议及时更新sitemap文件;

主动提交。就是把你的页面直接丢给百度的接口,亲口告诉百度你有哪些页面,这是效率最高也是收录最快的方式了。但是需要注意,百度对每天提交的数量是有限制的,而且反复提交重复的页面,会被降低每日限额,所以已被收录的页面不建议反复提交。收录有个时间过程,请先耐心等待;

实时提交。在页面中安装百度给的提交代码,当这个页面被用户打开我,便自动把这个页面提交给百度。这里不需要考虑重复提交的问题。 以上几种提交方式可以同时使用,互不冲突。

北京搜索搜索引擎索引引擎优化

什么是SEO搜索引擎网站优化,SEO是一种方式,是利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名.