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

温州生活网招聘信息什么是搜索引擎优化?

温州生活网招聘信息,什么是搜索引擎优化?,h5 css3 网站开发实例,哪些网站做机票酒店有优势MySQL-索引的使用 关于索引的使用 比方说一个表给3个字段a, b, c 建立联合索引 使用索引的几种情况 全值匹配, 即查询条件中使用到a, b, c三个条件此时使用全值匹配三个字段都会用到具体是先查找a字段匹配的缩小查询范围,再在所有等于a字段的范围去查找等于b字段的, 随后再在…

MySQL-索引的使用

关于索引的使用 比方说一个表给3个字段a, b, c 建立联合索引

使用索引的几种情况

  1. 全值匹配, 即查询条件中使用到a, b, c三个条件此时使用全值匹配三个字段都会用到具体是先查找a字段匹配的缩小查询范围,再在所有等于a字段的范围去查找等于b字段的, 随后再在等于a和b字段的范围内查找等于c字段的

  2. 匹配最左边的字段, 比方说我们的查询条件是where a = xx and b = xx 那么会去先查找等于a的数据说缩小查询范围再查找等于b的数据如果我们的条件是where a = xx and c = xx 那么只会使用到a字段, 如果我们的查询条件是where b = xx and c = xx 那么将不会使用到索引, 即我们的查询条件中必须包含最左边的列才会使用到我们的索引,

    原因: 因为在我们的B+树页中联合索引是按照a, b, c索引的顺序进行排列的a字段相同则按照b字段顺序排, b字段顺序相同则通过c字段排。查找时通过二分法去页目录中查找数据对应的分组再往下查找, 如果没有按照索引建立的顺序则不会通过这个查找规则去查找

  3. 匹配列前缀, 如果我们的查询条件是where a like ‘xxx%’ 那么会通过字符集的比较规则去查找出xxx前缀开头的这些数据, 如果是where a like '%xx%'是不会使用索引的

  4. 匹配范围值, 必须使用到最左边的列, 我们的查询条件是 where a > ‘xx’ and a < ‘yy’ and b > ‘xx’ and b < 'yy’此时只会用到联合索引的a字段而b字段只能在a条件筛选完的范围内进行查找

  5. 精确匹配某一列并范围匹配另一列, where a = ‘xx’ a and b > ‘xx’ and b < ‘yy’ and c > ‘xx’ and c < ‘yy’ 此时会匹配到等于a列的值的数据, 再通过范围查找到b > ‘xx’ and b < ‘yy’ 但是没法使用到c列与第5点同理

  6. 用于排序 例如where a = ‘xx’ order by b, c 这样是可以使用到索引的

    几种使用不到索引的情况

    • ASC DESC 混用
    • where子句中出现非排序使用到的索引列
    • 排序列包含非同一个索引的列
    • 排序列使用了复杂的表达式
  7. 用于分组 例如我们的select a,b,c count(*) from table group by a, b, c这个查询语句进行了三次分组先根据a一致的数据进行了一次分组, 再在a一致的数据中将b一致的分为更小的一组, 再在上一轮中a,b一致的中进行分组统计此时正好用到a,b,c三个字段组成的联合索引,由于我们的索引是按照a,b,c三个字段 排序的此分组是可以直接使用到B+树索引的

回表

什么是回表?

当我们使用二级索引(非聚簇索引)查询时, 会先在这个索引的B+树上找到对应的主键id再通过查找出的id去聚簇索引上通过id去找到对应查询的数据

这个过程会在两颗B+树上进行查找

如果我们的查询条件是select * from table where a = xx and b = xx c = xx 数据库字段有id, a, b, c, d, e 其中a, b, c字段是联合二级索引但是id, c, d, e字段没有在联合索引上, 此时需要查联合索引以外的数据则需要回表到聚簇索引上查找

注意: 需要回表的记录越多, 使用二级索引的性能就越低 ,甚至在某些时候宁愿全表扫描也不愿使用二级索引

什么时候使用二级索引什么时候全表扫描?

查询优化器会事先对表中的记录计算统计一些数据, 利用这个统计数据可以知道回表的数据的多少, 需要回表的数据越多则就越倾向全表扫描, 反之则倾向使用二级索引

覆盖索引: 为了避免回表带来的困扰 建议: **最好在查询的列中只包含索引列 **

如何挑选索引

  1. 只为搜索, 排序或分组的列创建索引

  2. 考虑列的基数

    列的基数是指某一列中不重复的个数, 在记录行数一定的情况下,列的基数越大, 该列中的值越分散, 列的基数越小,该列中值越集中最好为列基数大的列建立索引

  3. 索引列的类型尽量小

  4. 索引字符串的前缀create index idx_name_birthday_phone_number (name(10), birthday, phone_number) tablename只用到了前10个字符这样是鼓励的,尤其是在字符串类型能存储的字符比较多的时候。

  5. 让索引列在比较列表中单独出现

    例如我的SQL语句是select a from table where a>1这样是可以使用索引的但是select a from table where a * 2 > 1这样是无法使用索引的

  6. 主键插入顺序, 如果主键是忽大忽小的话, 数据进入到我们的B+树中是需要先查找到插入位置的, 而B+树主键索引是按照顺序进行排列的, 从中间位置的页插入是会导致页分裂和记录移位的, 会带来性能损耗, 所以建议主键是递增的

http://www.dtcms.com/wzjs/278533.html

相关文章:

  • 仪征做网站松原新闻头条
  • 商城网站模版代码软件培训机构
  • 从零学建设网站018马经南宁网站建设优化服务
  • 简历生成器在线制作seo优化工作内容
  • 室内设计说明搜索优化
  • 网站开发职业规划实施爱链
  • 英文网站建设szjijie如何做市场营销推广
  • 怎么做网站镜像青岛网站建设优化
  • 网站设计 教程学电脑办公软件培训班
  • 建设厅特种作业seo排名工具外包
  • 有那个网站可以做任务赚钱吗seo主要是指优化
  • 网站日志分析的意义网站设计方案
  • 十大家居家装网站哪个好整站seo
  • 小程序网站建站模板网络营销公司哪家可靠
  • 优秀的国外网站百度网站排名优化价格
  • wordpress图片站主题东莞做网站推广
  • 网站建设综合小程序定制开发公司
  • 哈尔滨云建站模板百度做广告推广怎么样
  • 哪个商城网站建设好关键字搜索引擎
  • 网站后台放在哪里百度搜索百度
  • wordpress建垃圾站网店代运营收费
  • 怎么上网站做简易注销的步骤b2b网站平台有哪些
  • 网站转app工具高级版windows优化大师免费
  • 期货直播室网站建设如何提高seo关键词排名
  • 河南高端网站建设一份完整的营销策划书
  • 福田网站建设龙岗网站建设seo搜索引擎优化平台
  • 暴雪被谁收购了银川seo优化
  • 网站开发应注意哪些问题seo网站有哪些
  • 新网站多久会被百度收录广告免费推广网
  • 烟台网站建设网站百度快速seo软件