在任何数据库中使用喜欢语句往往都是令人头疼的一件事,因为不少用户发现喜欢语句效率极低,查看执行计划后发现原来没有走索引,那么在一种数据库系统数据中喜欢语句的执行效率又是怎样的呢?我们又该如何提高喜欢语句的执行效率呢?
实验环境
数据库环境:PostgreSQL 12.3 X86_64
创建虚拟环境:
postgres=# create database test db 01 owner high go;
创建数据库
postgres=# \c testdb01 highgo
test db 01=# create table testliketb01(userid int primary key,username varchar(20),password varchar(60),说明文字);
创建表格
为何保证测试效果更直观,我们使用随机数据填充一下该表
1 testdb 01=# insert in testliketb01 select generate _ series(1,500000),split_part('张三,李四,王五,小明,小红、'、'、(random()*(5-1) 1):int)、MD5((random()*(5-1)1):3: varchar)、split_part('highgo、highgo02、highgo03 '、'、'、'、'、(random()*(3-1)1)336033: int);
至此,虚拟数据创建完毕。
testdb 01=# select * from testliketb01 limit 10;
userid |用户名|密码|描述
- - - -
1 | 王五| 4 F2 BCA 371 b 42 Abd 1403 D5 c 20 c 4542 dff |高go
2 | 李四| 2a 978 c 605188770 C5 ed 162889 fff 189 e |高go 02
3 | 李四| F5 d 129 ab 728 b 72 ac6 f 663 Fe 544 BC 7 c 16 |高go
4 | 小明| 53134 fa 1022 c 58 e 65168 b 6a 1 FBE 5e 39 |高go 02
5 | 王五| 2cf 9 abb 2 A8 b 676 a 626 fa 2 c 317d 401 ed 8 |高go 02
6 | 王五| 2247 a 0 cfda 1 f 2819554 d6e 8 e 454622 EB |高go 02
7 | 张三| 59 dfdc 680 c 17533 dfba 1c 72 c 9 ce 0 BF 76 |高go 02
8 | 王五| 87 db 4258236 a 3826259 DCC 3e 7 CB 5 fc 63 |高go 02
9 | 王五baaf 7a 2f 7027 df 9 aaeb 665121432 b 6 e 2 |高go 02
10 | 王五| 2f 8 FB 36 b 3227 c 795 b 111 b 9 BD 5b 031 a 76 |高go 02
(10行)
此时数据库的状态:
testdb01=# \l testdb01
数据库列表
名称|所有者|编码|整理|目录|访问权限|大小|表空间|描述
- - - - - - - - -
testdb01 | highgo | UTF8| en_US .UTF-8美国UTF-8 || 59 MB | pg_default |
(1行)
简单喜欢语句查询:
testdb01=#解释分析选择*从testliketb01中,其中用户名喜欢'王%';
查询计划
-
testliketb01上的序列扫描(成本=0.00.11405.00行=125350宽=52(实际时间=0.014.177.571行=124952个循环=1)
过滤器:((用户名):文本~ ~ '王“%”:文本)
过滤器删除的行: 375048
计划时间: 0.121毫秒
执行时间: 190.554毫秒
(5行)