PostgreSQL中使用数组改进性能实例代码
前言
postgresql支持数组类型,可以是基本类型,也可以是用户自定义的类型。日常中使用数组类型的机会不多,但还是可以了解一下。不像C或JAVA高级语言的数组下标从0开始,postgresql数组下标从1开始,既可以指定长度,也可以不指定长度。且postgresql既支持一维数组,也支持多维数组,但是平时二维数组也就够用了。
本文将给大家介绍PostgreSQL通过数组改进性能的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧
PostgreSQL通过数组改进性能
创建一个用户和设备关系映射表,用户的设备ID存放在数组字段里面:
CREATE TABLE device.user_devices ( user_id character varying(32) COLLATE pg_catalog."default" NOT NULL, device_ids character varying[] COLLATE pg_catalog."default" NOT NULL, CONSTRAINT user_devices_pkey PRIMARY KEY (user_id) )
将数据导入表:
insert into device.user_devices select device_owner, array_agg(device_id) from device.device_info where device_owner is not null and device_owner != '' group by device_owner
比较原查询方式和新查询方式的性能:
原查询方式:
新查询方式:
可以发现新查询方式的性能有了巨大的提升!
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。
相关推荐
-
Mybatis调用PostgreSQL存储过程实现数组入参传递
前言 项目中用到了Mybatis调用PostgreSQL存储过程(自定义函数)相关操作,由于PostgreSQL自带数组类型,所以有一个自定义函数的入参就是一个int数组,形如: 复制代码 代码如下: CREATE OR REPLACE FUNCTION "public"."func_arr_update"(ids _int4)... 如上所示,参数是一个int数组,Mybatis提供了对调用存储过程的支持,那么PostgreSQL独有的数组类型作为存储过程的参数又
-
在PostgreSQL中使用数组时值得注意的一些地方
在Heap中,我们依靠PostgreSQL支撑大多数后端繁重的任务,我们存储每个事件为一个hstore blob,我们为每个跟踪的用户维护一个已完成事件的PostgreSQL数组,并将这些事件按时间排序. Hstore能够让我们以灵活的方式附加属性到事件中,而且事件数组赋予了我们强大的性能,特别是对于漏斗查询,在这些查询中我们计算不同转化渠道步骤间的输出. 在这篇文章中,我们看看那些意外接受大量输入的PostgreSQL函数,然后以高效,惯用的方式重写它. 你的第一反应可能是将PostgreSQ
-
PHP 读取Postgresql中的数组
复制代码 代码如下: function getarray_postgresql($arraystr) { $regx1 = '/^{(.*)}$/'; $regx2 = "/\"((\\\\\\\\|\\\\\"|[^\"])+)\"|[^,]+/"; $regx3 = '/^[^"].*$|^"(.*)"$/'; $match = null; preg_match( $reg
-
举例简单介绍PostgreSQL中的数组
PostgreSQL 有很多丰富的开箱即用的数据类型,从标准的数字数据类型.到几何类型,甚至网络数据类型等等.虽然很多人会忽略这些数据类 型,但却是我最喜欢的特性之一.而数组数据类型正如你所期望的,可以在 PostgreSQL 存储数组数据,有了这个特性,你可以在单个表中实现以往需要多个表才能实现的存储要求. 为什么要使用数组来存储数据,如果你是应用开发人员,那么在数据库中使用同样的模型来存储程序中的数据,何乐而不为呢.况且这样的做法还能提升性能.下面我们将介绍如何使用 PostgreSQL 的
-
简单介绍Ruby on Rails对PostgreSQL数组类型的支持
我非常高兴在宣布Rails 4.0 现在支持 PostgreSQL数组类型. 你可以方便的在migration通过 :array => true里创建数组类型的字段. 创建数组类型的字段的时候还可以添加其它的选项(length,default,等等) create_table :table_with_arrays do |t| t.integer :int_array, :array => true # integer[] t.integer :int_array, :array =>
-
PostgreSQL中使用数组改进性能实例代码
前言 postgresql支持数组类型,可以是基本类型,也可以是用户自定义的类型.日常中使用数组类型的机会不多,但还是可以了解一下.不像C或JAVA高级语言的数组下标从0开始,postgresql数组下标从1开始,既可以指定长度,也可以不指定长度.且postgresql既支持一维数组,也支持多维数组,但是平时二维数组也就够用了. 本文将给大家介绍PostgreSQL通过数组改进性能的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 PostgreSQL通过数组改进性能 创
-
列举java语言中反射的常用方法及实例代码
Java反射机制 一.什么是反射机制 简单的来说,反射机制指的是程序在运行时能够获取自身的信息.在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息. 二.哪里用到反射机制 有些时候,我们用过一些知识,但是并不知道它的专业术语是什么,在刚刚学jdbc时用过一行代码, Class.forName("com.mysql.jdbc.Driver.class").newInstance();但是那时候只知道那行代码是生成 驱动对象实例,并不知道
-
JAVA中Integer值的范围实例代码
废话不多说了,直接给大家贴代码,具体代码如下所示: package com.test; public class Test { public static void main(String []args) { Integer a = 100;//此处若使用new,则==值必为false Integer b = 100; System.out.println(a==b);//true Integer c = 150; Integer d = 150; System.out.println(c==d
-
Java获取彩色图像中的主色彩的实例代码
本文讲述了Java获取彩色图像中的主色彩的实例代码.分享给大家供大家参考,具体如下: 一:基本思路 对于一张RGB色彩空间的彩色图像,很多时间我们想通过程序获得该图像有几种主要的色彩,但是对一般图像来说,在色彩交界处都是通过像素混合来实现自然过渡,所以直接扫描图像的像素值,得到的不同颜色值可能多达上百中,而实际上图像可能只有3-4种的主要色彩,如何去掉那些混合颜色,准确提取出来这3-4中的主色彩,根据一般图像的特征,图像在不同色彩的边界处混合不同的颜色值,此可以视为图像的边缘特性之一,因此可以根
-
JS数组实现分类统计实例代码
将水果数组中同类的水果合并为一条并求出总数 var fruits = [{ name: 'apple', value: 1 }, { name: 'apple', value: 2 }, // 总计3个苹果 { name: 'banana', value: 2 }, { name: 'banana', value: 3 }]; // 总计5个香蕉 var fruitTotal = []; // 存最终数据结果 // 数据按照水果名称进行归类 var nameContainer = {}; //
-
Linux 中的 Openssl命令及实例代码
openssl命令的格式是"openssl command command-options args",command部分有很多种命令,这些命令需要依赖于openssl命令才能执行,所以称为伪命令(pseudo-command),每个伪命令都有各自的功能,大部分command都可以直接man command查看命令的用法和功能. OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用.在Ope
-
使用jQuery实现两个div中按钮互换位置的实例代码
效果如下 代码如下: <head> <meta charset="utf-8" /> <title></title> <script type="text/javascript" src="js/jquery-2.1.0.js"></script> <script type="text/javascript"> $(function() { /
-
jQuery Ajax向服务端传递数组参数值的实例代码
在使用MVC时,向服务器端发送POST请求时有时需要传递数组作为参数值 下面使用例子说明,首先看一下Action [HttpPost] public ActionResult Test(List<string> model) { return Json(null, JsonRequestBehavior.AllowGet); } 方式一,构造表单元素,然后调用serialize()方法得到构造参数字符串 @{ Layout = null; } <!DOCTYPE html> <
-
vue Render中slots的使用的实例代码
本文介绍了vue Render中slots的使用的实例代码,有需要了解vue Render中slots用法的朋友可参考.希望此文章对各位有所帮助. render 中 slot 的一般默认使用方式如下: this.$slots.default 对用 template的<slot>的使用没有name . 想使用多个slot 的话.需要对slot命名唯一.使用this.$slots.name 在render中添加多个slot. <body> <div class="&qu
随机推荐
- JS实现的base64加密、md5加密及sha1加密详解
- iOS中的NSTimer定时器的初步使用解析
- 解决SyntaxHighlighter 代码高亮不换行问题的解决方法
- PHP中字符安全过滤函数使用小结
- 微信支付 JS API支付接口详解
- 总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
- node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
- destoon实现商铺管理主页设置增加新菜单的方法
- AJAX显示加载中并弹出图层遮挡页面的实现示例
- jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
- 身份证号码验证算法深入研究和Java实现
- 一个处理用户登陆的servlet简单实例
- Android Handler工作原理解析
- 用session做客户验证时的注意事项
- php 执行系统命令的方法
- php多数据库支持的应用程序设计第1/2页
- Node.Js生成比特币地址代码解析
- 浅谈webpack devtool里的7种SourceMap模式
- python执行CMD指令,并获取返回的方法
- 微信小程序地图(map)组件点击(tap)获取经纬度的方法