PostgreSQL数据库中如何保证喜欢语句的效率
  • 作者:admin
  • 发表时间:2021-04-22 07:51
  • 来源:未知

在任何数据库中使用喜欢语句往往都是令人头疼的一件事,因为不少用户发现喜欢语句效率极低,查看执行计划后发现原来没有走索引,那么在一种数据库系统数据中喜欢语句的执行效率又是怎样的呢?我们又该如何提高喜欢语句的执行效率呢?

实验环境

数据库环境: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行)