博学谷 > 资讯 > 软件测试 > 数据库基础的试题汇总(中)

原创 数据库基础的试题汇总(中)

发布时间:2019-07-05 18:57:54 浏览 991 来源:博学谷资讯 作者:照照

    以下是小编继续整理的关于数据库基础的试题汇总,现在赶紧来看看吧!

     

    <a href = 'http://www.openxlive.net/news/494.html' target='_blank' style='color: #466de2;font-size: 14px'>数据库</a>基础的试题汇总(中)

     

    一、库索引


    数据库索引,是数据库管理系统中一个排序的数据结构,以协助 快速查询、更新数据库表中数据。索引的实现 通常使用 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、尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。

     

    数据库基础的试题几天就分享到这里了,同学们要好好掌握呀!

上一篇:小白入门指南:软件测试与软件开发之间的区别 下一篇:MySQL优化提高效率的必看秘籍

相关推荐 更多

最新文章

扫描二维码,回复"测试"获取25G资料包

4887铁算结果开奖结果小说