面试——数据库

1. SQL语句中:drop、delete、truncate

三个都是表示删除:

  • 定义:drop和truncate表示删除表格的结构,delete是删除数据
  • 速度:一般来说:drop>truncate>delete
  • SQL语句类型:delete是dml数据操控语言,这个操作会放在rollback segment,事务提交以后才生效。如果有相应的触发器,执行的时候被触发;drop和truncate是ddl数据定义语言,操作立即生效,不会放在rollback segment,无法回滚,操作不触发触发器trigger。

2.drop、delete与truncate分别在什么场景之下使用?

  • drop:不再需要一张表的时候:比如删除一个索引:alter table drop index index_name
  • truncate:保留表,只删除其中的数据
  • delete:删除部分数据,加上where子句

3.left join、right join、inner join

1,left join:以左表作为保留表,B表中保留满足条件的

2,right join:以右表作为保留表,A表中保留满足条件的,

3,inner join:查找的数据是左右两表共有的

4.SQL的查询优化

(1)从表连接的角度优化:尽量使用内连接,因为内连接是两表都满足的行的组合,而外连接是以其中一个表的全部为基准。

(2)尽量使用存储过程代替临时写SQL语句:因为存储过程是预先编译好的SQL语句的集合,这样可以减少编译时间。

(3)从索引的角度优化:对那些常用的查询字段简历索引,这样查询时值进行索引扫描,不读取数据块。

(4)还有一些常用的select优化技巧:

(5)A.只查询那些需要访问的字段,来代替select*

5. 索引

索引是一种数据结构,对数据库表中的一或多列的值进行排序,是为了帮助MYSQL高效获取数据,索引的实现通常使用B树及其变种B+树。

优点:

  1. 大大加快了数据的检索速度
  2. 保证了数据的唯一性
  3. 加速了表与表之间的联系
  4. 在使用order by、group by子句进行数据索引的时候,可以显著减少时间

缺点:

  1. 索引需要占用物理内存
  2. 如果修改、增加、删除表中数据,索引也要动态维护。

索引的类型:

根据索引的功能,可以将索引划分为四类:普通索引、唯一索引、主键索引、聚集索引

原文地址:https://www.cnblogs.com/gaogo/p/11437144.html