首页 > 其他分享 >面试题-索引设计的原则

面试题-索引设计的原则

时间:2023-01-21 11:11:24浏览次数:39  
标签:面试题 原则 查询 索引 字符串 NULL 区分度 效率

索引设计的原则

  1. 针对于数据量较大,且查询比较频繁的表建立索引。

  2. 针对于常作为查询条件(where)、排序(order by)、分组(group by)操作的字段建立索引。

  3. 尽量选择区分度高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的效率越高。 (不适合做索引,如性别,男女未知,最多也就三种,区分度实在太低)

  4. 如果是字符串类型的字段,字段的长度较长,可以针对于字段的特点,建立前缀索引。 (原因:当字段类型为字符串(varchar,text,longtext等)时,有时候需要索引很长的字符串,这会让 索引变得很大,查询时,浪费大量的磁盘IO, 影响查询效率。此时可以只将字符串的一部分前缀,建 立索引,这样可以大大节约索引空间,从而提高索引效率。)

  5. 尽量的扩展索引,不要新建索引。比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可。即尽量使用联合索引,减少单列索引,查询时,联合索引很多时候可以覆盖索引,节省存储空间, 避免回表,提高查询效率。

  6. 要控制索引的数量,索引并不是多多益善,索引越多,维护索引结构的代价也就越大,会影响增 删改的效率。(不要过度索引。索引需要额外的磁盘空间,并降低写操作的性能。在修改表内容的时候,索引会进 行更新甚至重构,索引列越多,这个时间就会越长。所以只保持需要的索引有利于查询即可)

  7. 如果索引列不能存储NULL值,请在创建表时使用NOT NULL约束它。当优化器知道每列是否包含 NULL值时,它可以更好地确定哪个索引最有效地用于查询。

  8. 定义有外键的数据列一定要建立索引。

  9. 对于定义为text、image和bit的数据类型的列不要建立索引。

标签:面试题,原则,查询,索引,字符串,NULL,区分度,效率
From: https://www.cnblogs.com/galo/p/17063671.html

相关文章

  • LeetCode.面试题02.05-链表求和-题解分析
    题目来源面试题02.05.链表求和题目详情给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并......
  • 六大设计原则
    六大设计原则SOLID单一职责原则(SingleResponsibilityPrinciple)单一职责原则:应该有且仅有一个原因引起类的变更。单一职责指的是,一个类,一个函数(方法)只负责一个单一的......
  • 03对数组使用索引查询
    importnumpyasnp#基础索引x1=np.arange(10)x2=np.arange(20).reshape(4,5)print(x1)print('-----')print(x1[0],x1[9],x1[-1])print('-----')print(x1[2:......
  • numpy广播机制与高级索引使用
    numpy广播机制与高级索引使用NumPy比一般的Python序列提供更多的索引方式。除了整数和切片的索引外,数组可以由整数数组索引、布尔索引及花式索引。类型转换import......
  • 【设计模式】设计模式六大原则
    开闭原则对扩展开放,对修改关闭。使用抽象类,接口等构建抽象层,通过实现接口(继承抽象类)的方式构建具体实现。当系统修改时,无需对抽象层代码修改,只需编写新的具体实现类达到......
  • 前端面试题合集-第一篇
    前端面试题合集-第一篇......
  • 面试题-什么是最左前缀法则?什么时候索引将失效?
    什么是最左前缀法则?什么时候索引将失效?如果索引了多列(联合索引),要遵守最左前缀法则。最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列。如果跳跃某一列,索......
  • MySQL索引使用宝典已送达,快来查缺补漏 转载
    这一篇文章来聊一聊如何用好MySQL索引。  为了更好地进行解释,我创建了一个存储引擎为InnoDB的表user_innodb,并批量初始化了500W+条数据。包含主键id、姓名字段(name)、......
  • 2022最新MySQL高频面试题汇总
    sidebar:heading事务的四大特性?事务特性ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。原子性是指事务包含的所有操作要么全部成......
  • 2022年面试题之JS
    1. js数组的哪些方法会改变原数组pop()删除arrayObject的最后一个元素,把数组长度减1,并且返回它删除的元素的值push()方法可把它的参数顺序添加到arrayObject的尾......