当前位置: 首页 > 面试题库 >

请介绍一些你了解的数据库优化方法

山寒
2023-03-14
本文向大家介绍请介绍一些你了解的数据库优化方法相关面试题,主要包含被问及请介绍一些你了解的数据库优化方法时的应答技巧和注意事项,需要的朋友参考一下

考察点:数据库

 

(1)选取最适用的字段属性

MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。

例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。同样的,如果可以的话,我们应该使用MEDIUMINT而不是BIGIN来定义整型字段。

另外一个提高效率的方法是在可能的情况下,应该尽量把字段设置为NOTNULL,这样在将来执行查询的时候,数据库不用去比较NULL值。 对于某些文本字段,例如“省份”或者“性别”,我们可以将它们定义为ENUM类型。因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能

(2)使用连接(JOIN)来代替子查询(Sub-Queries)

MySQL从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。例如,我们要将客户基本信息表中没有任何订单的客户删除掉,就可以利用子查询先从销售信息表中将所有发出订单的客户ID取出来,然后将结果传递给主查询

(3)使用联合(UNION)来代替手动创建的临时表

MySQL从4.0的版本开始支持union查询,它可以把需要使用临时表的两条或更多的select查询合并的一个查询中。在客户端的查询会话结束的时候,临时表会被自动删除,从而保证数据库整齐、高效。使用union来创建查询的时候,我们只需要用UNION作为关键字把多个select语句连接起来就可以了,要注意的是所有select语句中的字段数目要想同。下面的例子就演示了一个使用UNION的查询。

(4)事务

尽管我们可以使用子查询(Sub-Queries)、连接(JOIN)和联合(UNION)来创建各种各样的查询,但不是所有的数据库操作都可以只用一条或少数几条SQL语句就可以完成的。更多的时候是需要用到一系列的语句来完成某种工作。但是在这种情况下,当这个语句块中的某一条语句运行出错的时候,整个语句块的操作就会变得不确定起来。设想一下,要把某个数据同时插入两个相关联的表中,可能会出现这样的情况:第一个表中成功更新后,数据库突然出现意外状况,造成第二个表中的操作没有完成,这样,就会造成数据的不完整,甚至会破坏数据库中的数据。要避免这种情况,就应该使用事务,它的作用是:要么语句块中每条语句都操作成功,要么都失败。换句话说,就是可以保持数据库中数据的一致性和完整性。事物以BEGIN关键字开始,COMMIT关键字结束。在这之间的一条SQL操作失败,那么,ROLLBACK命令就可以把数据库恢复到BEGIN开始之前的状态。

 类似资料:
  • 本文向大家介绍请你介绍一下数据库的ACID特性相关面试题,主要包含被问及请你介绍一下数据库的ACID特性时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1)原子性:事务被视为不可分割的最小单元,事物的所有操作要不成功,要不失败回滚,而回滚可以通过日志来实现,日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作。 2)一致性:数据库在事务执行前后都保持一致性状态,在一致性状态下,所有

  • 本文向大家介绍请你介绍一下数据库的隔离级别 相关面试题,主要包含被问及请你介绍一下数据库的隔离级别 时的应答技巧和注意事项,需要的朋友参考一下 考察点:事务的隔离级别   隔离级别 脏读(Dirty Read) 不可重复读(NonRepeatable Read) 幻读(Phantom Read) 未提交读(Read uncommitted) 可能 可能 可能 已提交读(Read committed

  • 本文向大家介绍请你介绍一下,数据库的三个范式?相关面试题,主要包含被问及请你介绍一下,数据库的三个范式?时的应答技巧和注意事项,需要的朋友参考一下 考察点:数据库 第一范式(1NF) 强调的是列的原子性,即列不能够再分成其他几列。 第二范式(2NF) 首先是 1NF,另外包含两部分内容,一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。 在1NF基础上,

  • (1)Semaphore同步器 特征: 经典的信号量,通过计数器控制对共享资源的访问 Semaphore(int count):创建拥有count个许可证的信号量 acquire()/acquire(int num) : 获取1/num个许可证 release/release(int num) : 释放1/num个许可证 (2)CountDownLatch同步器 特征: 必须发生指定数量的事件后才

  • 本文向大家介绍请你介绍一下,数据库乐观锁和悲观锁相关面试题,主要包含被问及请你介绍一下,数据库乐观锁和悲观锁时的应答技巧和注意事项,需要的朋友参考一下 考察点:数据库   悲观锁 悲观锁(Pessimistic Lock),顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。悲观锁:假定会发生并发冲突,屏蔽一切可

  • 本文向大家介绍请你介绍一下B+树?相关面试题,主要包含被问及请你介绍一下B+树?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: B+是一种多路搜索树,主要为磁盘或其他直接存取辅助设备而设计的一种平衡查找树,在B+树中,每个节点的可以有多个孩子,并且按照关键字大小有序排列。所有记录节点都是按照键值的大小顺序存放在同一层的叶节点中。相比B树,其具有以下几个特点: 每个节点上的指针上限为2d而不