2023
春
哈
尔
滨
⼯
业
⼤
学
数
据
库
系
统
实
验
三
实
验
序
号
:003
学
号
:2021112114
姓
名
:
刘
宇
轩
导
⼊
数
据
库
操
作
两个
元
组
的
分
布
规
律
1.
查
询
元
组
的
数
据
分
布
SELECT COUNT(*) FROM Foo;
SELECT COUNT(*) FROM Foo WHERE id = 0;
SELECT COUNT(*) FROM Foo WHERE a = 0;
SELECT COUNT(*) FROM Foo WHERE b = 0;
SELECT COUNT(*) FROM Foo WHERE c = 0;
1
2
3
4
5
2.
在
FooIdx
上
创
建
如
下
索
引
:
⽂
件
⾥
已
经
建
完
了
导
⼊
⽂
件会
报
错
CREATE INDEX idx_a_b_c ON FooIdx(a, b, c);
CREATE INDEX idx_b_c ON FooIdx(b, c);
CREATE INDEX idx_tag ON FooIdx(tag);
CREATE INDEX idx_tag4 ON FooIdx(tag(4));
--
该
索
引
可
以
在
MySQL
上
创
建
,
但
⽆
法
在
PostgreS
1
2
3
4
查
看
索
引
3.
在
Foo
和
FooIdx
上
分别
执
⾏
⼀
系
列
查
询
,
测
量
每
个
查
询
的
执
⾏
时
间
,
⽐
较
同
⼀个
查
询
在
哪
个
表
上
执
⾏
得
更
快
。
进
⾏
两
种
查
询
source
路
径
执
⾏
更
快
1
SELECT * FROM Foo WHERE b = 123 AND c = 23;
1
SELECT * FROM FooIdx WHERE b = 123 AND c = 23;
1
左
边
为为
增
加
索
引
右
边
是
增
加
索
引
的
查
询
时
间
--
搜
索
键
等
值
⽐
较
1.
对
于
foo
中
没
有
索
引
的
扫
描
查
看
查
询计
划
,
possiblekey=NULL
表
明
他
没
有
可
能
在
查
询
的
时
候
建
⽴
索
引
。
所
以
foo
只
能
做
扫
描
。
2.
由
于
fooidx
中
有
bc
的
索
引
所
以
查
找
速
度
很
快
,
否
则
⽐
如
他
只
有
abc
索
引
但
是
他
只
需
要
查
找
bc
,
b
在
存
储
空
间
中
是
连
续
存
放
的
所
以
可
以
加
快
查
找
速
度
。
type
是
ref
代
表
他
在
查
询
的
时
候
并
没
有
做
前
端
扫
描
,possiblekey=idx_b_c
(
b,c)
3.
另
外
key_len
是
10
的
原
因
:4+4+1+1