首页 > 其他分享 >面试题 1

面试题 1

时间:2024-10-27 21:20:53浏览次数:6  
标签:面试题 场景 适用 查询 索引 唯一 主键

数据库

1. mySQL数据库索引的类型有哪些?

主键索引 ,唯一索引,普通索引,覆盖索引,全文索引,组合索引,空间索引,哈希索引,
前缀索引,自适应哈希索引

1. 主键索引

• 作用:用于唯一标识表中的每一行数据,确保数据的唯一性和完整性。
• 特点:每个表只能有一个主键索引,主键列不允许为 NULL。

2. 唯一索引

• 作用:确保索引列中的所有值都是唯一的,但允许有 NULL 值。
• 特点:可以有多个唯一索引,但每个索引列的值必须是唯一的。

3. 普通索引(Normal Index)

• 作用:用于加速数据检索,不强制唯一性。
• 特点:可以有多个普通索引,允许索引列中的值重复。

4. 覆盖索引(Covering Index)

• 作用:包含查询所需的所有列的索引,可以直接从索引中获取数据,而不需要访问表。
• 特点:提高查询性能,减少磁盘 I/O。

5. 全文索引(Full-Text Index)

• 作用:用于全文搜索,支持对文本内容进行高效的搜索。
• 特点:适用于大文本字段,如文章内容、产品描述等。

6. 组合索引(Composite Index)

• 作用:在多个列上创建的索引,用于加速多列条件的查询。
• 特点:索引的顺序很重要,查询条件必须包含组合索引的前缀列才能使用该索引。

7. 空间索引(Spatial Index)

• 作用:用于加速空间数据的查询,如地理位置数据。
• 特点:适用于地理信息系统(GIS)应用。

8. 哈希索引(Hash Index)

• 作用:使用哈希表实现索引,适用于等值查询。
• 特点:只支持等值查询,不支持范围查询。

9. 前缀索引(Prefix Index)

• 作用:对字符串列的前缀创建索引,减少索引的大小。
• 特点:适用于长字符串列,但可能会降低索引的选择性。

10. 自适应哈希索引(Adaptive Hash Index)

• 作用:InnoDB 存储引擎自动创建的哈希索引,用于加速频繁访问的数据页。
• 特点:自动管理,不需要手动创建。

使用场景
• 主键索引:适用于需要唯一标识每一行数据的场景。
• 唯一索引:适用于需要确保某些列值唯一的场景。
• 普通索引:适用于需要加速数据检索的场景。
• 覆盖索引:适用于查询频繁访问的列,且查询条件包含这些列的场景。
• 全文索引:适用于需要对大文本进行全文搜索的场景。
• 组合索引:适用于需要加速多列条件查询的场景。
• 空间索引:适用于需要处理地理位置数据的场景。
• 哈希索引:适用于等值查询频繁的场景。
• 前缀索引:适用于长字符串列,且需要减少索引大小的场景。
• 自适应哈希索引:适用于 InnoDB 存储引擎,自动优化频繁访问的数据页。
通过合理选择和使用不同类型的索引,可以显著提高数据库的查询性能。

2.主建索引,唯一索引,普通索引 区别?

1.主键索引

• 定义: 主键索引是唯一标识表中每一行记录的索引。每个表只能有一个主键索引。
• 唯一性: 主键索引的值必须是唯一的,且不能为NULL。
• 用途: 用于确保数据的唯一性和快速检索。

2.唯一索引

• 定义: 唯一索引确保索引列中的所有值都是唯一的,但可以有多个唯一索引。
• 唯一性: 唯一索引的值必须是唯一的,但可以为NULL(通常只允许一个NULL值)。
• 用途: 用于确保数据的唯一性,但不一定是主键。

3.普通索引

• 定义: 普通索引是最基本的索引类型,用于加速数据检索,但不强制唯一性。
• 唯一性: 普通索引的值可以重复,也可以为NULL。
• 用途: 用于提高查询性能,但不保证唯一性。

3.mysql索引是不是越多越好?

  1. 查询性能提升
    • 好处: 索引可以显著提高查询速度,尤其是对于大型表和复杂查询。
    • 适用场景: 适用于经常被查询的列,尤其是WHERE子句、JOIN条件和ORDER BY子句中使用的列。
  2. 写操作性能下降
    • 负面影响: 索引会增加插入、更新和删除操作的开销。每次写操作都需要更新索引,这会降低写操作的性能。
    • 适用场景: 对于写操作频繁的表,过多的索引可能会导致性能下降。
  3. 存储空间增加
    • 负面影响: 每个索引都需要占用额外的存储空间。过多的索引会增加数据库的存储需求。
    • 适用场景: 对于存储空间有限的环境,过多的索引可能会导致存储空间不足。
  4. 维护成本增加
    • 负面影响: 索引需要定期维护,以确保其有效性。过多的索引会增加维护成本。
    • 适用场景: 对于需要频繁维护的数据库,过多的索引可能会增加维护的复杂性和成本。
  5. 索引选择性
    • 重要性: 索引的选择性(即索引列中不同值的数量与总行数的比率)对查询性能有很大影响。选择性越高,索引的效果越好。
    • 适用场景: 对于选择性低的列(如性别、状态等),索引的效果可能不明显。

总结
选择性高的列: 优先为选择性高的列创建索引。
频繁查询的列: 为经常用于查询条件的列创建索引。
写操作少的表: 对于写操作较少的表,可以适当增加索引。
定期评估: 定期评估和优化索引,删除不必要的索引。

4.索引失效场景?

使用函数或表达式
• 场景: 在查询条件中对索引列使用函数或表达式。

5. SQL语句如何调优?

6.回表知道吗,怎么避免回表查询?

7.mysql的MVCC?

8.数据库的引擎?

标签:面试题,场景,适用,查询,索引,唯一,主键
From: https://www.cnblogs.com/xwdzj/p/18509013

相关文章

  • 机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
    1.基础算法常见面试篇1.1过拟合和欠拟合常见面试篇一、过拟合和欠拟合是什么?二、过拟合/高方差(overfiting/highvariance)篇2.1过拟合是什么及检验方法?2.2导致过拟合的原因是什么?2.3过拟合的解决方法是什么?三、欠拟合/高偏差(underfiting/highbias)篇3.......
  • springboot面试题
    什么是SpringBoot?你们项目中为什么使用springboot?SpringBoot简化了使用Spring的难度。简省了繁重的配置,提供了各种启动器,开发者能快速上手。独立运行SpringBoot而且内嵌了各种servlet容器,Tomcat、Jetty等,现在不再需要打成war包部署到容器中,SpringBoot只要打成一个......
  • Mysql索引-面试题
    索引用于快速查询和检索数据,本质可以看成是一种排序好的数据结构索引底层:B+树索引的作用:唯一索引-->保证数据表中的每一行数据的唯一性。减少检索数据量,减少IO次数。索引底层数据结构Hash表哈希表是键值对的集合,通过Key查询对应Value,哈希表可以快速检索数据O(1)如......
  • 【面试题】Node.JS篇
    1.什么是Node.js?它的主要特点是什么?适用于哪些场景?Node.js 是一个基于ChromeV8引擎的JavaScript运行时环境,它允许JavaScript代码在服务器端运行。Node.js的主要特点是事件驱动、非阻塞I/O模型,这使得它非常适合处理高并发请求和实时应用。它适用于构建快速、可扩展的网络......
  • Java面试题及答案整理( 2024年 10 月最新版,持续更新)
    1.抽象类必须要有抽象方法吗?不需要,抽象类不一定非要有抽象方法。 普通类不能包含抽象方法,抽象类可以包含抽象方法。抽象类不能直接实例化,普通类可以直接实例化。2.抽象类能使用final修饰吗?不能,定义抽象类就是让其他类继承的,如果定义为final该类就不能被继承,这样彼......
  • 挑战Java面试题复习第1天,坚持就是胜利
    面向对象和面向过程的区别面向过程:步骤分析:将问题分解为一系列步骤。函数实现:用函数逐步实现这些步骤。调用执行:在需要时调用这些函数。高性能:适合对性能要求高的场合,如单片机和嵌入式开发。面向对象:对象分解:将问题分解为多个对象。行为描述:对象描述事物在问题解决过程中的行为......
  • 高级java每日一道面试题-2024年10月24日-JVM篇-说一下JVM有哪些垃圾回收器?
    如果有遗漏,评论区告诉我进行补充面试官:说一下JVM有哪些垃圾回收器?我回答:1.Serial收集器特点:Serial收集器是最古老、最稳定的收集器,它使用单个线程进行垃圾收集工作。在进行垃圾回收时,它会暂停所有用户线程,即StopTheWorld(STW)。单线程工作,适合单核CPU。在年......
  • 高级java每日一道面试题-2024年10月23日-JVM篇-说一下JVM有哪些垃圾回收算法?
    如果有遗漏,评论区告诉我进行补充面试官:说一下JVM有哪些垃圾回收算法?我回答:在Java虚拟机(JVM)中,垃圾回收(GarbageCollection,GC)是一项非常重要的功能,用于自动管理应用程序的内存。JVM采用多种垃圾回收算法来决定何时以及如何回收不再使用的对象所占用的内......
  • Java 面试题【MySQL 篇 一】
    MySQL中的数据排序是怎么实现的?参考链接:MySQL中的数据排序是怎么实现的?-MySQL面试题-面试鸭-程序员求职面试刷题神器排序过程中,如果排序字段命中索引,则利用索引排序。反之,使用文件排序。文件排序中,如果数据量少则在内存中排序,具体是使用单路排序或者双路排序。......
  • 面试 | Python热门面试题·基础篇
    Python简介Python由GuidovanRossum开发,于1991年2月20日首次发布。它是最广泛使用和最受欢迎的编程语言之一,本质上是解释性的,因此在合并动态语义方面提供了灵活性。它也是一种免费的开源语言,语法非常简单干净。这使开发人员可以轻松Python,Python还支持面向对象编程,......