关于pgsql 几个操作符的效率测试比较

关于pgsql 几个操作符的效率测试比较
1. json::->> 和 ->>

测试方法:单次运行100次,运行10个单次取平均时间。
测试结果:->> 效率高 5% 左右

功能差异:
json::->> 在使用前需要对对象转换为jsonb 然后再执行 ->> 操作,所以比->>更耗时 。
所以如果我们需要对返回的对象进行jsonb操作,用jsonb_* 相关函数时,
建议用jsonb_* 而不用 jsonb_*_text ,后者会把结果的jsonb对象转换为text,相对于会多两次 jsonb <--> text 转换操作。

2. any 和 in
select * from table where column in(‘1‘,‘3‘,‘5‘,‘7‘);
select * from table where column any(‘{1,3,5,7}‘::text[]);

测试方法:单次运行100次,运行10个单次取平均时间。
测试结果:in 效率高 5% 左右

功能差异:
如果参数是自己传入的,那么建议用in(),如果参数是jsonb对象转换的可使用any。

3. 查询条件判断是否有值的时候,用 exists 和 判断结果 is null
select * from table1 a where exists (select 1 from jsonb_array_elements(a.value) as b where b->>‘goods_id‘ = ‘?‘ ) ;
select * from table1 a where (select 1 from jsonb_array_elements(a.value) as b where b->>‘goods_id‘ = ‘?‘ limit 1) is not null;

测试方法:单次运行100次,运行10个单次取平均时间。
测试结果:exists 效率高 8-10% 左右 。
功能差异:exists只比较不会操作数据,is not null 有操作数据的动作。

4. false 和 1 = 2
select * from table where false ;
建议使用false,对于cpu来说, 1=2 多数据存储的动作。

时间: 2024-12-29 17:49:32

关于pgsql 几个操作符的效率测试比较的相关文章

关于 pgsql 数据库json几个函数用法的效率测试

关于pgsql 几个操作符的效率测试比较1. json::->> 和 ->> 测试方法:单次运行100次,运行10个单次取平均时间.测试结果:->> 效率高 5% 左右 功能差异:json::->> 在使用前需要对对象转换为jsonb 然后再执行 ->> 操作,所以比->>更耗时 .所以如果我们需要对返回的对象进行jsonb操作,用jsonb_* 相关函数时,建议用jsonb_* 而不用 jsonb_*_text ,后者会把结果的js

ORM for Net主流框架汇总与效率测试

框架已经被越来越多的人所关注与使用了,今天我们就来研究一下net方面的几个主流ORM框架,以及它们的效率测试(可能会有遗漏欢迎大家讨论). ORM框架:Object/Relation Mapping(对象/关系 映射)的缩写,易于理解的模型化数据的方法.简单的说就是把数据库的关系型数据类型转换为用对象型程序控制的框架类型. 今天研究的orm框架如下: 1.NHibernate(使用与介绍:http://www.cnblogs.com/stone_w/archive/2011/09/15/2177

sql语句的效率测试

1.测试sql语句执行时间的方法,获得时间差 declare @end_date datetime select @begin_date = getdate() --要执行的sql语句 select @end_date = getdate() select datediff(ms,@begin_date,@end_date) as '用时/毫秒' 2.下面这种方法比较全面,将执行每个语句时采取的步骤作为行集返回,通过层次结构树的形式展示出来,输出中包含的列: SET STATISTICS io

大数据量分页存储过程效率测试附代码

在项目中,我们经常遇到或用到分页,那么在大数据量(百万级以上)下,哪种分页算法效率最优呢?我们不妨用事实说话. 测试环境 硬件:CPU 酷睿双核T5750  内存:2G 软件:Windows server 2003    +   Sql server 2005 OK,我们首先创建一数据库:data_Test,并在此数据库中创建一表:tb_TestTable 按 Ctrl+C 复制代码1create database data_Test --创建数据库data_Test 2GO 3use data

监控SharePoint效率之(四) –开展效率测试

在真正上线之前,要对效率做充足的测试,以免上线之后出现响应慢而影响用户体验.那么应该如何做生产环境上线之前就做效率测试呢? 那就需要模拟一个和生产环境相似的测试环境,来完成这个工作.在搭建测试环境的时候,需要注意测试环境要和生产环境足够的接近.比如: 和生产环境同样的硬件规格 同样的软件设置 同样的操作系统版本 同样的第三方解决方案 同样的用户,用户组和权限设置 除此之外,还要模拟生产环境将来可能达到的存储量.比如,如果预计三年后生产环境上有1TB的数据,那么就要在测试环境模拟这个数据. 环境准

用for和while遍历HashMap效率测试

import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.Iterator; public class EntryTest { public static void main(String[] args) { Map<Integer, String> map = new HashMap<Integer, String>(); for (int i = 0;

javascript数组去重 - 效率测试

数组去重,前端面试酷爱的问题,问题简单而又能看出一个程序员对计算机程序执行过程的理解如何. 数组去重的方法有很多,到底哪种是最理想的,我不清楚.于是我测试了下数组去重的效率.测试二十万个数据,随着数据越多效率很明显的就体验了出来. 以下是我针对网上三种高效率方法总结与效率测试,不喜勿喷O(∩_∩)O~~ 数组去重法1: 1 Array.prototype.unique1 = function(){ 2 console.time("数组去重法1"); //记录开始执行的时间 3 var

纯PHP Codeigniter(CI) ThinkPHP效率测试

最近一直想做一个技术类的新闻站点,想做的执行效率高些,想用PHP做,一直纠结于用纯PHP做还是用CI或者THINKPHP.用纯PHP效率高,缺点 n多,比如安全方面.构架方面等等等等:用CI.thinkPHP的话这些需要考虑的就少些,但是怕效率方面差得太多.后来就想先测测吧,如果差得太多, 就自己写个“框架”,满足自己的需求即可的框架. CI版本是2.1.3,thinkphp用的是3.1. 因为大多数站点所做的事情就是查询数据库,因此此次的测试着重于数据库查询并显示.测试的数据库是dede的sy

Python_线程、线程效率测试、数据隔离测试、主线程和子线程

0.进程中的概念 三状态:就绪.运行.阻塞 就绪(Ready):当进程已分配到除CPU以外的所有必要资源,只要获得处理机便可立即执行,这时的进程状态成为就绪状态. 执行/运行(Running)状态:当进程已获得处理机,其程序正在处理机上执行,此时的进程状态成为执行状态. 阻塞(Blocked)状态正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态.引起进程阻塞的事件可有多种,例如,等待I/O完成.申请缓冲区不能满足.等待信件(信号)等. 同步:一个任务的完成需要依赖另外