行业动态

【软件测试】数据库基础面试题汇总(二)

  众所周知,在软件测试中,数据库是必备知识,也是基础中的基础。今天小编继续整理了关于数据库基础的试题汇总,希望和大家一起分享,现在赶紧来看看吧!

【软件测试】数据库基础面试题汇总(二)

  一、库索引

  数据库索引,是数据库管理系统中一个排序的数据结构,以协助 快速查询、更新数据库表中的数据。索引的实现 通常使用 B_TREE。

  B_TREE 索引加速了数据访问,因为存储引擎不会再去扫描整张表得到需要的数据;相反,它 从根节点开始,根节点保存了子节点的指针,存储引擎会根据指针快速寻找数据。

  二、数据库怎么优化查询效率?

  1、储存引擎选择:如果数据表需要事务处理,应该考虑使用 InnoDB, 因为它完全符合 ACID 特性。如果不需 要事务处理,使用默认存储引擎 MyISAM 是比较明智的

  2、分表分库,主从。

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

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

  5、应尽量避免在 where ?子句中使用!= ?或<> 操作符,否则将引擎放弃使用索引而进行全表扫描

  6、应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎 放弃使用索引而进行全表扫描

  7、Update 语句,如果只更改 1、2 个字段,不要 Update 全部字段, 否则频繁调用会引起明显的性能消耗, 同时带来大量日志

  8、对于多张大数据量(这里几百条就算大了)的表 JOIN,要先分页再 JOIN,否则逻辑读会很高,性能很差。

  三、你用的 Mysql 是哪个引擎,各引擎之间有什么区别?

  主要 MyISAM 与 InnoDB 两个引擎,其主要区别如下:InnoDB 支持事务,MyISAM 不支持,这一点是非常 之重要。事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而 MyISAM 就不可以了;

  MyISAM 适合查询以及插入为主的应用,InnoDB 适合频繁修改以及涉及到安全性较高的应用; InnoDB 支持外键,MyISAM 不支持;

  MyISAM 是默认引擎, InnoDB 需要指定; InnoDB 不支持FULLTEXT 类型的索引;

  InnoDB中不保存表的行数,如 select count() from table 时,

  InnoDB;需要扫描一遍整个表来计算有多少行,但是 MyISAM 只要简单的读出保存好的行数即可。注意的是,当 count()语句包含 where 条件时MyISAM 也需要 扫描整个表;

  对于自增长的字段,InnoDB 中必须包含只有该字段的索引,但是在 MyISAM 表中可以和其他字段一起建立联合索引;清空整个表时,InnoDB 是一行一行的删除,效率非常慢。MyISAM 则会重建表;

  InnoDB 支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like '%lee%'

  四、如何对查询命令进行优化?

  1、 应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索。

  2、 应尽量避免在 where 子句中对字段进行 null 值判断,避免使用!=或<>操作符,避免使用 or 连接条件,或在 where 子句中使用参数、对字段进行表达式或函数操作,否则会导致权标扫描 c. 不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算, 否则系统将可能无法正确使用索引。

  3、使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引, 否则该索引将不会被使用。

  4、 很多时候可以考虑用 exists 代替 in、 f. 尽量使用数字型字段。

  5、 尽可能的使用 varchar/nvarchar 代替 char/nchar。

  6、任何地方都不要使用 select from t??? ,用具体的字段列表代替“,” 不要返回用不到的任何字段。

  7、尽量使用表变量来代替临时表。

  8、避免频繁创建和删除临时表,以减少系统表资源的消耗。k. 尽量避免使用游标,因为游标的效率较差。

  9、在所有的存储过程和触发器的开始处设置 SET NOCOUNT ON ,在结束时设置 SET NOCOUNT OFF。 m. 尽量避免大事务操作,提高系统并发能力。

  10、尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。

  以上内容为大家介绍了数据库基础面试题汇总,本文由多测师亲自撰写,希望对大家有所帮助。了解更多软件测试相关知识:https://www.duoceshi.com/xwzx-hydt/

新闻资讯

联系我们

联系人:王女士

手机:17727591462

电话:0755-21072941

邮箱:hr@duoceshi.com

地址: 广东省深圳市龙华区龙华街道清湖和平路62号优鼎企创园D栋201室,202室

用手机扫描二维码关闭
二维码