1. 怎么优化数据库的查询?
- 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
- 应尽量避免在 where 子句中使用!=或<>操作符。
- 应尽量避免在 where 子句中对字段进行 null 值判断。
- 应尽量避免在 where 子句中使用 or 来连接条件。
- 下面的查询也将导致全表扫描:“select id from t where name like ‘%abc%’” 若要提高效率,可以考虑全文检索。
- in 和 not in 也要慎用,否则会导致全表扫描,很多时候用 exists 代替 in 是一个好的选择。
- 应尽量避免在 where 子句中对字段进行表达式操作。
- 应尽量避免在where子句中对字段进行函数操作。
2. 在数据库中条件查询速度很慢的时候,如何优化?
- 建索引
- 减少表之间的关联
- 优化sql,尽量让sql利用索引定位数据,不要让sql做全表查询
- 简化查询字段,没用的字段不要,已经对返回结果的控制,尽量返回少量数据
- 利用分页查询减少返回的数据量
3. 数据库中事务是什么,有哪些特性?
- 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序单元(unit)。
- 事务通常由SQL语言或编程语言发起并控制
- 特性:
- 事务是恢复和并发控制的基本单位
- 事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性
4. sql语句关键词的执行顺序?
- FROM 子句, 组装来自不同数据源的数据
- WHERE 子句, 基于指定的条件对记录进行筛选
- GROUP BY 子句, 将数据划分为多个分组
- 使用聚合函数进行计算
- 使用 HAVING 子句筛选分组
- 计算所有的表达式
- 使用 ORDER BY 对结果集进行排序
- 即:from—>where—>group by—>having—>计算所有的表达式—>order by—>select输出
5. 数据库有哪几种约束类型?
数据库有五种约束类型,分别是:
- 主键约束 PRIMARY KEY
- 外键约束 FOREIGN KEY
- 唯一约束 UNIQUE
- 检查约束 CHECK
- 非空约束 NOT NULL
6. 简述数据库执行计划?
- SQL语句发送到数据库后需要翻译为执行计划,SQL语句到功能是利用执行计划执行实现的
- 数据库在执行完全一样的SQL语句时候会重用相同的执行计划
- 有 ?参数的SQL语言会重用相同的执行计划
7. 数据库建立索引常用的原则是什么?什么情况下不适合建立索引?
- 在大数据量的表上建立索引才有意义
- 在where子句或是连接条件上经常引用的列上建立索引
- 很少或从不引用的字段和逻辑型的字段,如男或女(是或否)等不要建立索引
8. 表与表之间有哪些关联关系?
- 一对一(实际上是特殊的一对多)
- 一对多
- 多对多,需要中间关系表