数据库事务:是指做为单个逻辑工做单元执行的一系列操做,这些操做要么全作,要么全不作,是一个不可分割的工做单元。html
事务特色:面试
比较 | truncate | delete |
---|---|---|
相同点 | 删除表中的所有行 | 不带where字句删除表中的所有行 |
相同点 | 删除记录,不删除表定义 | 删除记录,不删除表定义 |
不一样点 | truncate比delete速度快,且使用系统和事务日志资源少 | delete每删除一行,并在事务日志中为所删除的每行记录一项 |
不一样点 | truncate正常状况返回0,中断什么都不返回 | delete返回删除的行记录数 |
做用:数据库
优势:编程
缺点:缓存
适合建立索引:安全
不适合建立索引:数据库设计
对于那些在查询中不多使用或者参考的列不该该建立索引。这是由于,既然这些列不多使用到,所以有索引或者无索引,并不能提升查询速度。相反,因为增长了索引,反而下降了系统的维护速度和增大了空间需求。ide
对于那些只有不多数据值(惟一性差)的列也不该该增长索引。这是由于,因为这些列的取值不多,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即须要在表中搜索的数据行的比例很大。增长索引,并不能明显加快检索速度。模块化
对于那些定义为text, image和bit数据类型的列不该该增长索引。这是由于,这些列的数据量要么至关大,要么取值不多。性能
DDL(Data Definition Language):数据定义语言,定义对数据库对象(库、表、列、索引)的操做。表明指令:CREATE、DROP、ALTER、RENAME、 TRUNCATE等
DML(Data Manipulation Language):数据操做语言,定义对数据库记录的操做。表明指令:INSERT、DELETE、UPDATE、SELECT等
存储引擎是:数据库管理系统如何存储数据、如何为存储的数据创建索引和如何更新、查询数据等技术的实现方法。MySQL的核心就是插件式存储引擎,支持多种存储引擎。
MyISAM
,InnoDB
,Memory
三个引擎便可,区别就是各自的Feature
不同,标✔
的标识该引擎支持对应的特性。支持的索引以下:
存储过程是一个预编译的SQL 语句,优势是容许模块化的设计,就是说只需建立一次,之后在该程序中就能够调用屡次。若是某次操做须要执行屡次SQL ,使用存储过程比单纯SQL 语句执行要快。能够用一个命令对象(call)来调用存储过程。
优势:
缺点:
链接方式:
链接方式说明:
范式:
参考资料:
实际使用:三大范式只是通常设计数据库的基本理念,能够创建冗余较小、结构合理的数据库。若是有特殊状况,固然要特殊对待,数据库设计最重要的是看需求和性能,需求>性能>表结构。因此不能一味的去追求范式创建数据库
SQL查询中各个关键字的执行前后顺序:
from > on> join > where > group by > with > having > select > distinct > order by > limit
参考资料:《MySQL技术内幕:SQL编程 第三章查询处理》
问题分析:从1000万这个数字能够定位到考察数据量特别大的状况下如何提高查询效率。
数据库设计方面
数据库I/O方面
在SQL语句方面
preparedStatement
减小查询次数