在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
以下是小编继续整理的关于数据库基础的试题汇总,现在赶紧来看看吧!
一、库索引
数据库索引,是数据库管理系统中一个排序的数据结构,以协助 快速查询、更新数据库表中数据。索引的实现 通常使用 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、尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。
数据库基础的试题几天就分享到这里了,同学们要好好掌握呀!
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
如何开展兼容性测试?兼容性测试有什么作用?
兼容性测试是指测试软件在特定的硬件平台上、不同的应用软件之间、不同的操作系统平台上、不同的网络等环境中是否能够很友好的运行的测试。兼容性测试是软件测试过程中必不可少的一个过程,没有兼容性测试的测试是不完整的测试,下面来分享怎么做兼容测试,希望能对大家有所帮助。
8223
2019-07-02 16:49:44
软件测试面试题汇总:测试流程(2)
为面试新工作做准备的同学们,小编在这里整理了一下软件测试面试题中关于测试流程的问题,需要面试的同学可以大致梳理一遍,这样便于大家在面试过程中游刃有余地应对考试或是面试官提问。
7365
2019-07-03 16:26:23
博学谷软件测试常见问题汇总
博学谷软件测试常见问题汇总:编写测试计划的目的、测试人员在软件开发过程中的任务、一条软件缺陷(或者叫Bug)记录都包含了哪些内容、黑盒测试和白盒测试的优缺点、简述常用的Bug管理或者用例管理工具,并且描述其中一个工作流程、软件测试种类、Alpha测试与Beta测试的区别、什么是Bug。
7422
2019-07-12 15:21:20
软件测试题之缺陷Bug
程序员一生与bug奋战,可谓是杀敌无数,见怪不怪了。今天小编要和大家分享软件测试题之缺陷Bug。
7338
2019-07-15 16:31:40
软件测试工程师面试提升笔试题汇总
目前在国内,软件测试在开发过程中的地位越来越重要了,而软件测试工程师也已然成为高薪好前途的代名词。因此有不少小伙伴纷纷向这个方向求职,为了让大家在面试的时候更加自信和从容,小编汇总了一些面试的提升笔试题,希望对大家有用。
5164
2019-10-09 10:19:54