美文网首页
索引的技术点

索引的技术点

作者: 上海马超23 | 来源:发表于2017-08-21 22:58 被阅读0次

联合索引:多字段组合索引,加速组合条件查询

联合索引要满足从左到右的查询需求,例如(a,b,c)的联合索引,能够加速 a|(a,b)|(a,b,c) 三组查询需求。但不能满足 b|(b,a)等查询需求。

in查询

select * from where 索引字段 in (xxx,yyy) 能够命中索引

or查询

select * from where 索引字段 = xxx or 索引字段 = yyy
只有新版本的MySql能够命中索引

!=查询 肯定不能命中索引 (包括not in、not exists)

枚举项少的字段不宜作为索引

代码里使用enum不要用String,enum占用空间小且效率高。

明确知道只有一条结果,使用limit 1能够提高效率。

计算不要放到数据库层,放到上游应用层,能够增加命中查询缓存几率,另外应用层的计算性能可以做增加集群水平扩展,数据库擅长的是存储与索引。

多次调用相同的sql,能够命中查询缓存。
禁止使用存储过程、视图、触发器、Event。

大型文件只存放url

表的主键要递增,数据行写入可以提高插入性能,可以避免索引page分裂,减少表碎片提升空间和内存的使用

主键要选择较短的数据类型, Innodb引擎普通索引都会保存主键的值,较短的数据类型可以有效的减少索引的磁盘空间,提高索引的缓存效率。
详见mysql索引B+树结构介绍:http://hedengcheng.com/?p=525

禁止使用外键,约束性靠应用控制。

外键会导致表与表紧耦合,update或delete影响sql性能,会造成死锁。不使用外键,使用最终一致性牺牲强一致性,换取性能

必须把字段定义为NOT NULL并且提供默认值

  1. null的列使索引/索引统计/值比较都更加复杂,对MySQL来说更难优化
  2. 对null 的处理时候,只能采用is null或is not null,而不能采用=、in、<、<>、!=、not in这些操作符号。如:where name!=’shenjian’,如果存在name为null值的记录,查询结果就不会包含name为null值的记录

相关文章

  • 索引的技术点

    联合索引:多字段组合索引,加速组合条件查询 联合索引要满足从左到右的查询需求,例如(a,b,c)的联合索引,能够加...

  • 面试必备的索引优化

    关于索引,分为以下几点来讲解(技术文): 索引的概述(什么是索引,索引的优缺点) 索引的基本使用(创建索引) 索引...

  • 用Golang写一个搜索引擎(0x02)--- 倒排索引技术

    这一篇,我们来说说搜索引擎最核心的技术,倒排索引技术,倒排索引可能需要分成几篇文章才说得完,我们先会说说倒排索引的...

  • MySQL数据库基础之索引技术及字段维护

    MySQL索引和字段修改 1、MySQL索引技术 ①、创建带索引的表 Create table表名(user)( ...

  • Elasticsearch 技术分析(八):剖析 Elastic

    Elasticsearch 技术分析(八):剖析 Elasticsearch 的索引原理 1|0前言 创建索引的时...

  • ARTICLES IN NEWSPAPERS, MAGAZINE

    社会科学索引、人文学科索引、应用科学和技术索引、纽约时报索引、艺术索引、论文与一般文学索引、传记索引、一般科学...

  • 查找/索引技术

    查找算法平均时间复杂度空间复杂度查找条件顺序查找O(n)O(1)无序/有序二分查找O(log2n)O(1)有序二叉...

  • 浅析索引技术

    1. 认识索引 索引是一种常见的数据库优化手段,设计优良的索引能够大幅提升数据库的查询效率,提升并发能力。 举一个...

  • MYSQL-索引

    MYSQL-索引 概述 用来加快查询的技术很多,其中最重要的是索引。通常索引能够快速提高查询速度。如果不适用索引,...

  • 优化网站加载速度-mongo篇

    笔者项目用到技术点 php+mongo+sql+redis mongo的索引 首先说明一下,使用mongo不加搜索...

网友评论

      本文标题:索引的技术点

      本文链接:https://www.haomeiwen.com/subject/oqkqdxtx.html