列表查询时,如果有一对多的表,联表查出来会让结果有重复数据。
解决一1.确定主体信息是哪些,使用distinct
解决二2.分两步查询
解决三3.子查询查出多行的数据,取top1或max或min
月份:2020年5月
多列合并
1.sqlserverk中使用for xml path
select AuthStatus+','
from Vehicles FOR XML PATH('')
2.mysql 使用group_contact
group_concat(stt.name SEPARATOR ',' )
bitmap和布隆过滤器
bitmap
内存泄漏、内存溢出
内存溢出
应用程序运行的内存不够
内存泄漏
内存不能回收或者不能及时回收,越积越多,可能产生溢出
聚集索引的特性妙用
1.聚集索引的特征
a)索引顺序与数据的物理顺序一致
b) 索引与保存的数据节点在同一个位置
c) 一张表只能存在一个聚焦索引
2.第一个特征可让查询速度加快
3.利用第二个特征,建议组合索引的聚集索引,那么在查询组合列时也会快。比如,建立ID和用户名,密码的组合聚集索引,在通过ID查询用户名密码时,也会非常快。通过name查询不一定会命中索引,因为索引匹配从左开始,如果没命中就不会匹配右侧
数据库锁
1.S锁,X锁
2.S
sql的view,procedure,function语法复习
1.创建视图
creat view view_my
as
select *from user
2.创建存储过程(不建议使用,代码分离后,维护麻烦,同时调试也麻烦)
create procedure proc_my
(@id int,@name varchar(20))
as
begin
...sql
end
3.创建函数:可以理解为特殊的存储过程,带返回值
a.创建单字段函数
create function func_my
(@id int,@name varchar(20))
return int
as
begin
...sql
return @id --必须需带参数
end
b.创建多字段函数
create function func_my
(@id int,@name varchar(20))
return @table table(id int,name varchar(20))
as
begin
...sql
insert into @table .... --为了填充值返回
return --必须关键字,不需带参数
end
创建函数时定义返回参数,在begin-end内部需要有return
其他如创建约束(不建议使用),
索引的sql
锁
I/O阻塞
1.阻塞I/O、
2.非阻塞I/O
3.I/O多路复用
4.异步I/O:await 关键字