JAVA技术方向面试题-数据库(上)

本文探讨了数据库设计的步骤,包括需求分析和设计阶段的E-R图转换,强调了规范化的重要性。接着讲解了数据库索引的概念,区分了唯一索引、主键索引和聚集索引,并指出某些情况下索引可能无法使用,如模糊搜索和数据类型转化。最后,文章列举了SQL语句优化的方法,如适当使用EXISTS、避免计算和NULL值判断等,以提高查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、你怎么设计数据库?

• 在需求分析阶段,设计数据库的一般步骤为:

  1. 收集信息

  2. 标识对象

  3. 标识每个对象的属性

  4. 标识对象之间的关系

• 在概要设计阶段和详细设计阶段,设计数据库的步骤为:

  1. 绘制E-R图

  2. 将E-R图转换为表格

  3. 应用三大范式规范化表格

二、什么是数据库索引?索引的种类有哪些?

索引是对数据库表中一列或多列的值进行排序的一种结构,使bai用索引可快速访问数据库表中的特定信息。是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。

索引有三种类型:

唯一索引:唯一索引是不允许其中任何两行具有相同索引值的索引。当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。

主键索引:数据库表经常有一列或多列组合,其值唯一标识表中的每一行。该列称为表的主键。在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。

聚焦索引:在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。如果某索引不是聚集索引,则表中行的物理顺序与键值的逻辑顺序不匹配。

三、什么情况下设置了索引但无法使用(什么情况下索引会失效)?

1、以“%”开头的 LIKE 语句,模糊匹配

2、OR 语句前后没有同时使用索引

3、数据类型出现隐式转化(如 varchar 不加单引号的话可能会自动转换为 int 型)

四、说说对SQL语句优化有哪些方法?

(1)Where子句中:where表之间的连接必须写在其他Where条件之前,那些可以过滤掉最大数量记录的条件必须写在Where子句的末尾.HAVING最后。

(2)用EXISTS替代IN、用NOT EXISTS替代NOT IN。

(3) 避免在索引列上使用计算

(4)避免在索引列上使用IS NULL和IS NOT NULL

(5)对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

(6)应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描

(7)应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值