课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
数据库是软件编程开发程序员在学习后端编程开发的时候需要重点掌握的技术知识之一,下面我们就一起来简单了解一下,MySQL数据库中的一些基础知识。
1.UNIONALL与UNION的区别
UNION和UNIONALL关键字都是将两个结果集合并为一个。
UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。
而UNIONALL只是简单的将两个结果合并后就返回。
由于UNION需要排序去重,所以UNIONALL的效率比UNION好很多。
2.TRUNCATE与DELETE区别
TRUNCATE是DDL语句,而DELETE是DML语句。
TRUNCATE是先把整张表drop调,然后重建该表。而DELETE是一行一行的删除,所以TRUNCATE的速度肯定比DELETE速度快。
TRUNCATE不可以回滚,DELETE可以。
TRUNCATE执行结果只是返回0rowsaffected,可以解释为没有返回结果。
TRUNCATE会重置水平线(自增长列起始位),DELETE不会。
TRUNCATE只能清理整张表,DELETE可以按照条件删除。
一般情景下,TRUNCATE性能比DELETE好一点。
3.TIMESTAMP与DATETIME的区别
相同点
TIMESTAMP列的显示格式与DATETIME列相同。显示列宽固定在19字符,并且格式为YYYY-MM-DDHH:MM:SS。
不同点
TIMESTAMP
4个字节存储,时间范围:1970-01-0108:00:01~2038-01-1911:14:07。
值以UTC格式保存,涉及时区转化,存储时对当前的时区进行转换,检索时再转换回当前的时区。
DATETIME
8个字节存储,时间范围:1000-10-0100:00:00~9999-12-3123:59:59。
实际格式存储,与时区无关。
4.什么是联合索引
两个或更多个列上的索引被称作联合索引,联合索引又叫复合索引。
5.为什么要使用联合索引
减少开销:建一个联合索引(col1,col2,col3),实际相当于建了(col1),(col1,col2),(col1,col2,col3)三个索引。减少磁盘空间的开销。
覆盖索引:对联合索引(col1,col2,col3),如果有如下的sql:selectcol1,col2,col3fromtestwherecol1=1andcol2=2。那么MySQL可以直接通过遍历索引取得数据,而无需回表,这减少了很多的随机io操作。覆盖索引是主要的提升性能的优化手段之一。
效率高:索引列越多,通过索引筛选出的数据越少。有1000W条数据的表,有如下sqlselectfromtablewherecol1=1andcol2=2andcol3=3,假设假设每个条件可以筛选出10%的数据,如果只有单值索引,那么通过该索引能筛选出1000W*10%=100w条数据,然后再回表从100w条数据中找到符合col2=2andcol3=3的数据,然后再排序,再分页;如果是联合索引,通过索引筛选出1000w*10%*10%*10%=1w,效率得到明显提升。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!