我很好奇
CREATE INDEX idx ON tbl (columns);
vs
在PostgreSQL或MySQL实现中,当扫描索引列时,或者无论UNIQUE关键字是否只是在索引旁边引入了唯一约束,都具有显著的算法性能优势
我想可以公平地说,只要索引可能在内部实现为某种类似于hash1的结构,并且冲突处理根据定义会导致O(1)性能以外的结果,那么这可能是一个边际收益。鉴于这一前提,如果大部分值相同,结构很可能退化为线性
因此,就我的问题而言,假设值的分布是相对离散和一致的
提前谢谢
1这
我在PostgreSQL 8.4数据库中创建了一个Django表,其中一个表“扩展”了另一个表。一个表(foodayment)具有主键,该主键引用另一个表(Payment)。在SQL中,它如下所示:
CREATE TABLE foo.payments_payment
(
id integer NOT NULL DEFAULT nextval('payments_payment_id_seq'::regclass),
user_id integer NOT NULL,
...
CO
我正在运行一个简单的更新查询,类似于:
UPDATE some_table SET columnA = 'value' WHERE columnB = 'other value'
在Postgres中有一种方法可以在没有更新行时引发错误或打印一些消息?在数据库中,只有在从存储过程执行更新时才可能这样做。在plpgsql中:
BEGIN
UPDATE some_table SET columnA = 'value' WHERE columnB = 'other value'
IF
在使用Sybase和SQL Server多年后,我开始了一个PostgreSQL项目,我对它的怪癖还不熟悉,但到目前为止我印象深刻
我编写了一个返回参数的小函数。我传入一个清晰的密码,函数返回加密的密码和一个salt。这是:
CREATE OR REPLACE FUNCTION iSecGenPwdSalt(pwdin text, out salt text, out userpassword text)
AS
$BODY$
DECLARE
BEGIN
-- Gen
函数做了大量的数学运算,高度优化,但仍然相当缓慢。当然,更快的处理器可能会有所帮助。但我怀疑它是否会产生100倍的速度增益,这只能部分满足我的要求……我明白了。evaluate()是用什么语言编写的?再次感谢您的更新。虽然像evaluate()这样的函数的性能是我现在的主要主题之一(您的一些建议很久以前就已经提出了…),但从概念上讲,这永远也解决不了这个问题:我有一个视图,它只需要查看表中所有行的0.1%,但是evaluate()为所有100%的行调用。加速评估肯定会有一个上限(可能远小于因子1
我需要在plpgsql中生成一个非重复随机数的随机数。非重复编号应在[11001]范围内。但是,代码生成的数字超过1001
directed2number := trunc(Random()*7+1);
counter := directed2number
while counter > 0
loop
to_point := trunc((random() * 1/directed2number - counter/directed2number + 1) * 1001 +1);
...
是否可以在PostgreSQL中定义时态(即基于时间/日期的触发器)
假设我存储了一个包含一些数据的表,其中还包含一个时间戳的字段。
此时间戳字段是我希望触发某个函数的日期/时间
是否可以将触发器与此表关联,以便在给定时间执行所需的触发器?否,这是不可能的。触发器仅通过SQL语句(INSERT、UPDATE、DELETE)触发。这就是它的作用。或在UNIX/LINUX系统上使用cron作业。差不多
psql -p5432 mydb -c 'SELECT myfunction()'
作为系统用户
我有这样的问题,如果有人能帮助我,我会很高兴的。
我有一个要点索引表。这些点不会随着时间而改变
我想获取靠近某个给定线字符串的点。
示例:假设linestring是道路,点是道路沿线的poi。
我想获取距离给定道路5公里的poi。我想按正确的顺序取这些POI(沿路行驶顺序)。请看图片:
对于从1点到5点的给定道路,我希望获取距离道路最大5km的POI,并按顺序沿道路从1点到5点。因此,结果应该是:
POI_ID
1
5
6
8
9
10
12
13
这应该告诉我在沿路旅行时可以以最低的成本访
有关这方面的背景信息,请参见:
我的问题很简单:
我有一个表,其中包含从另一个数据库同步的产品定价信息。此表中只有一个字段由客户端控制,其余字段每隔一段时间就会被删除并在同步时重新插入(例如,每天一次到每周一次,由客户端使用PHP脚本手动运行)
1) 该表在4列上有一个索引(其中一列可以为null),在3个非null列上有另一个部分索引。当您删除大约90%的表并重新插入数据时,在所有数据都在表中之后删除索引并重新创建它们是好的,还是保持索引“原样”更好
现在,我转而使用Erwin Brand
我对gist索引有问题。
我有表格“国家”和“地理”(地理,多边形)栏。
我也有这个专栏的主要索引。
使用ST_CoveredBy()对2行(每个“geog”大约5MB)的表进行简单查询需要13秒(查询结果正确):
当我删除索引时,查询也花费了13秒
我已经做了:
真空分析gis.country(“geog”)
也许这就是问题所在:“不要使用GEOMETRYCOLLECTION作为参数调用”我读到(),这是因为重叠多边形,但国内地图不存在重叠多边形
编辑
查询计划-
Index Scan u
如何创建接受任何类型参数的函数
我可以创建如下函数:
创建功能测试(anyelement,anyelement).
但当我调用它时,我必须提供相同类型的参数:
SELECT test(1,2); -- ok
但是:
我可以创建一个函数,该函数将接受任何类型的参数,然后将它们转换为字符串并使用该字符串执行某些操作吗
那么,我可以创建类似于concat的函数吗(str“any”[,str“any”[,…])
UPD:更新的第二个示例有一个简单的替代方案。每种类型都可以转换为文本。您只需创建一个函数
MongoDB capped集合的基础是,它们允许您设置表的最大大小,当达到大小限制时,系统将清除旧数据
有人在PostgreSQL中提出过类似的设置并在生产中使用过吗?没有听说过类似的事情。我想您可以使用以下方法模拟有上限的表大小或循环队列:
上游
以及序列上的模运算符(有关如何进行合并/向上插入的说明,请参阅)
特别有趣的是(从我的角度来看)牛的反应(看看那些不被接受的答案)
通过在表中引入一列来表示“集合”中的索引以及该列的序列,每个upsert都可以基于以下条件:
where ind
带有Criteria API的JPA2似乎为PostgreSQL生成了无效的SQL。对于此代码:
Root-from=query.from(DBObjectAccessCounter.class);
Path object=from.get(DBObjectAccessCounter\uUx.object);
表达式sum=builder.sumAsLong(from.get(DBObjectAccessCounter_uz.count));
query.multiselect(object,s
我知道通过postgresql.conf我可以限制postgresql特定部分的内存使用,比如共享内存或工作内存,但是有没有办法限制postgresql服务器的总内存使用量?我找不到这样做的配置属性
顺便说一句,我需要在Windows Server 2008计算机上运行它。你说的“总”内存是什么意思?它是分配给各个池的资源的总和
所以,简言之。。。不要将各种池/缓冲区设置得太大,这是您的总内存限制。PostgreSQL没有任何可以设置的全局限制。相反,您可以配置共享_缓冲区(通常约占您打算为Po
我正在为Postgres 9.1编写plpgsql触发器。我需要能够捕获UPDATE的SET子句中发出的列名,以便在审核表中记录指定的操作。Postgres文档中的示例很简单,不适合我的需要。我已经在互联网上搜索了好几天,但我找不到任何其他的例子来尝试实现我想在这里做的事情
我的日程排得很紧,要尽快解决这个问题。我不知道Tcl,所以在这一点上pl/Tcl对我来说是不可能的。pl/Perl可能可以工作,但我不知道从哪里开始。我还想找到一种方法,在pl/pgsql中实现这一点,如果可能的话,以便于移
数据库noob警报:
我正在尝试插入postgres表。
我想插入的字段名为make\u date
字段类型为不带时区的时间戳非空,
如何在其中插入今天的日期?比如现在的日期和时间?类似于下面的内容,但我无法获得dateTime.now的正确数据类型插入格式
insert into inventory_tbl (make_date) values (dateTime.now)
使用now()或CURRENT\u TIMESTAMP除了C.Ramseyer的解决方案(这是正确的)之外,如果您总是
我认为内部连接等同于WHERE子句中的连接。当我使用WHERE子句进行join时,返回行。但如果我进行内部联接,则不会输出任何行。我得到的结果是没有匹配项。
是我弄错了,还是我做错了什么
这些连接等效吗
客栈加盟:
account_move_reconcile_line_applied amrla
INNER JOIN account_move_reconcile_line amrl ON (amrla.credit_line_id = amrl.id)
INNER JOIN account_m
我有一个包含格式化日期时间值(例如:2013-05-21T15:00:00+0200)和时区(例如:Europe/Rome)的字符串
表示此日期格式的最佳方式是什么 键入“带时区的时间戳”就是您想要的
对于将来的问题,请始终提及您的确切PostgreSQL版本(select version())。对于这个特定的问题,它并不重要,但通常会很重要。我有一个格式为“2013-05-21T15:00:00+0200”和时区的字符串:“Europe/Rome”如果我使用“timestamp with ti
有没有一种方法可以通过使用pg_archivecleanup命令按年龄或日期而不是硬编码名称来指定文件来清理WAL归档文件
例如,使用以下命令非常简单:
pg_archivecleanup "C:\Program Files\PostgreSQL\9.2\data\pg_xlog" 000000010000004600000045
其中0000000 1000004600045是文件名,之前创建的任何文件都将被删除
但是,如果我想自动化这个过程,必须有一种方法可以按时间/日期选择文件。您不应该
对于没有ORDERBY子句的查询,给定的查询计划是否总是以相同的顺序返回结果?我知道可能会选择不同的计划,但如果选择了相同的计划,会给出相同的结果顺序吗?从本质上讲,查询执行者在执行给定计划时有什么自由对行进行重新排序?否,即使没有计划更改,结果也不会以相同的顺序返回。
查询执行器不必对行进行重新排序,它甚至不首先对行进行排序
例如,当行按磁盘顺序排列时:
CREATE TABLE o(id int);
INSERT INTO o VALUES (1),(2),(3);
ANALYZE o;
E
我不完全是DBA,所以我希望得到易于理解的回答。我必须向我们的DB和pgpool提供复制,这似乎更方便,因为如果一个postgresql实例失败,客户机不需要更改任何内容来继续工作,对吗?因此,在这种情况下,使用pgpool更有意义,但配置部分(在我看来)似乎更复杂和混乱。例如,我是否需要在两台postgresql服务器上都设置WAL?或者,这仅在我想设置postgresql复制时才需要?我越是试图找到这些问题的答案,答案就越不清晰。也许我忘了怎么用谷歌搜索…PostgreSQL本身提供的内置复
我有一个表,有3列:国家、个人、评论。
我想添加一个数据库约束,它将为同一国家/地区的PersonID启用多个记录,但将阻止向多个国家/地区添加相同的PersonID。
有可能吗?如果您可以在混合中添加另一个表,这应该是可行的:
CREATE TABLE PersonCountries (
PersonID char(7) not null,
Country char(3) not null,
constraint UQ_PersonCountries_Persons U
我想将我的数据库导入服务器的数据库。因此,我将数据库转储文件复制到服务器的根目录并登录,然后执行以下操作:
root@iWidgetServer1:~# sudo -u postgres psql -U iwidget -d iwidget -f iwidget_dump2.sql
could not change directory to "/root"
psql: FATAL: Peer authentication failed for user "iwidget"
但是,iwidg
我有一个名为timings的表,其中我们存储了100万个响应时间,用于负载测试,现在我们需要将这些数据分成100组,即前500个记录作为一个组,以此类推,然后计算每组的百分位,而不是平均值
到目前为止,我尝试了这个查询
Select quartile
, avg(data)
, max(data)
FROM (
SELECT data
, ntile(500) over (order by data) as quartile
在我的postgesql数据库中,不幸的是我截断了这个表mail\u group,这个表被从数据库中删除了,我如何取回这个表
请帮助我,等待答复
谢谢
处于相同情况的任何其他人:立即使用pg_ctl stop-m immediate停止数据库(立即很重要,您需要模拟崩溃并防止检查点),然后不要重新启动数据库。。如果您的并发事务仍在进行中,那么您可能真的很幸运,PostgreSQL可能还没有解除表的支持文件的链接,因此它可能是可恢复的
你很可能无法取回数据,你删除了它。从备份中恢复
Postgr
函数就在循环之前卡住了
select * from scm_main.fn_connection_stations(1219646)
已打印消息“开始…”,但不会打印消息“…结束”
CREATE OR REPLACE FUNCTION
scm_main.fn_connection_stations(var_connection_id bigint)
RETURNS SETOF scm_main.typ_connection_stations AS
$BODY$ DECLARE
我已经构建了全新的PostgreSQL-9.5(alpha),我对的新功能感到非常兴奋。这将使多角色访问管理更加简单
例如,到目前为止,我使用了一个模型,其中NOLOGIN角色是数据库和所有表、视图、函数等的所有者;然后创建视图以授予对特定角色的适当访问权限。一切都很好,但观点确实在扩散。新的CREATE POLICY命令用于具有ENABLE ROW LEVEL SECURITY的表,看起来是一个更干净的替代方法,可以达到相同的目的
但是,到目前为止,我无法确定哪些表启用了RLS,以及在这些表上
首先:我是数据库方面的新手
我将postgreSQL与pgAdmin III一起使用,直到几天前它还运行得很好:几天前,当我不使用它时,我在Windows的“后台进程”中看到几个相同的postgreSQL程序(?)正在运行,我决定停止它们,因为当时我没有使用它们。错误:现在,当我尝试连接到服务器(在本地主机上)时,我收到错误消息:
“服务器不侦听”
服务器不接受连接:连接库报告
无法连接到服务器:连接被拒绝(0x0000274D/10061)服务器是否在主机“localhost”(::1)上运行
下面是一个带有Materialize的查询计划的示例:
Nested Loop (cost=4.65..49.46 rows=33 width=488)
Join Filter: (t1.hundred < t2.hundred)
-> ... (outer)
-> Materialize (cost=0.29..8.51 rows=10 width=244)
-> ... (inner)
在第二个示例中,内部查询的结果被加
我需要在查询中包含今天的日期
SELECT *
FROM
transactions, machine
WHERE
transactions.machineid::int8 = machine.machineid::int8 AND
(machine.storeid = '".$_SESSION['user_session']."')
事务表中有一个日期列。很抱歉:我必须添加sql注入标记。(加上PHP标记)thanx作为文档,sql注入也将得到修复
SELECT *
F
我在另一台服务器上的PostgreSQL中有一些数据,我需要读取这些数据以包含在Firebase应用程序中,然后呈现图表。我只有db连接字符串,那里没有用于返回该数据的端点
我将限制在Firebase上使用auth和角色向admin输入连接字符串
然后我需要一种Firebase应用程序用SQL获取数据并在客户端显示的方法,它将呈现表格和图表
用户永远不能看到连接字符串,即使在网络流量中也是如此
这是否可行以及如何实现?Firebase没有“与PostgreSQL同步”API
因此,要么你的应
更新windows后,我无法连接Postgres服务器。更新之前,打开数据库没有问题。我的Postgres数据库也不见了。当我要创建新数据库时,它会显示以下错误:
无法连接到服务器:无法连接到服务器:连接被拒绝(0x0000274D/10061)服务器是否在主机“localhost”(::1)上运行并在端口5432上接受TCP/IP连接?无法连接到服务器:连接被拒绝(0x0000274D/10061)服务器是否在主机“localhost”(127.0.0.1)上运行并在端口5432上接受TCP/
我能够连接psql并做我想做的事情,而不是用IntelliJ
PostgreSQL version : postgres (PostgreSQL) 9.6.1
IntelliJ version : 2016.3.1
IntelliJ配置:
URL : jdbc:postgresql://localhost:5432/sample
User : sample
Pwd : sample
测试连接:成功
因此,我连接(出现红色方块),然后尝试一个简单的查询:
select 1;
我得到了一个错误
我想按顺序跳过一些范围:
Create sequence id_seq;
假设我有一个序列作为Id\u seq。。从100开始
当它达到199。。然后从1000开始,到1999年。。应该从10000开始
setval(100,'Id_seq');
postgres是否具有执行此操作的默认配置
多个进程将使用此序列。。因此,在过程中使用setval()手动分配会带来一些困难。不,没有内置的方法来完成此操作。我从来没听说过有人想这么做
如果你真的关心你得到的数字,那么序列无论如何都不是适合你的。
我的postgresql数据库是这样的
SELECT * FROM point_records;
id | user_id | point | created_at | updated_at
----+---------+-------+---------------------+---------------------
1 | 1 | 100 | 2017-01-27 09:39:47 | 2017-01-27 09:39:47
3 |
我有一个表table,其中包含一个名为tags的jsonb列。每行中的标记元素可能包含也可能不包含名为组的字段。我的目标是按标记分组。对于标记包含组字段的所有行,分组。如以下postgres查询:
select tags->>'group' as group, sum(n) as sum
from TABLE
where tags ? 'group'
group by tags->>'group';
我试图将其转换为JOOQ,但无法找到如何表达where标记分组“条件
我正在使用pgAdmin4查询我的postgresql。
但查询数据输出未显示
只显示消息。(如下图所示)
如果显示我的查询数据输出,如何更改
一步一步
我质疑任何疑问。并显示结果。
Chane查询并运行。
单击“数据输出”选项卡并显示以前的结果数据。这不是改变。
所以我点击History选项卡,显示受影响的行是-1。但这个查询是有效的。
使用='A'@VaoTsun在查询中运行count(*)而不是*我更改了查询。但是结果是一样的。如果它没有显示异常数-写给pgadmin dev/
根据,我可以使用env varpostgres\u DB指定postgres docker映像创建的数据库的名称。我已经在docker compose文件中设置了它,但它没有被创建
以下是撰写文件的相关部分:
pg:
image: postgres:10
volumes:
- db-data:/var/lib/postgresql/data
environment:
POSTGRES_DB: user-auth
POSTGRES_USE
标签: Postgresql
database-administrationpostgresql-9.6
考虑以下示例:
超级用户admin在PostgreSQL数据库中执行以下命令:
CREATE DATABASE admindb;
CREATE ROLE dbo WITH CREATEDB CREATEROLE;
GRANT ALL PRIVILEGES ON DATABASE admindb TO dbo WITH GRANT OPTION;
CREATE ROLE user1 WITH LOGIN PASSWORD 'user1pw';
GRANT dbo TO user1;
ALTER R
我正在尝试将我的postgres数据库连接到Data Studio,收到以下错误:
很抱歉,我们遇到错误,无法完成您的请求。错误ID:1b7b6c50
我输入了与我将postgres数据库连接到Tableau时(成功)使用的相同的凭据,但我似乎不知道问题出在哪里
Host Name or IP: localhost
Port: 5432
Database: WU
Username: postgres
Password: [my correct password]
在进行故障排除时,我
我想从每个学生的出勤情况中获取每个学生的最长记录时间
table name : student_att
id | student_id | checkin_date | checkin_time | type
1 | 1 | 2019-08-04 | 08:25:00 | checkin
2 | 1 | 2019-08-04 | 09:30:00 | checkin
3 | 2 | 2019-08-04
问:我从PostGIS中提供的几何图形的函数内的ST_获取错误。不确定在什么仪式上实现ST_的第一个参数
注:变量经度和纬度为函数提供的字符类型。但是,我无法在内部构造传递给ST_的值
从自定义函数中提取代码:
pointText := 'POINT(longitude || || latitude )';
result := (select p_code
from public.parking_lot
b where ST_Within (S
我正在寻找一个PostgreSQL查询,其中我希望基于前一行值计算当前行值。下表举例来说,value1列将有第一个初始值,然后我需要在使用前一行值后计算行
当前行中value1列的公式为previousvalue1+当前行的id
表:
期望输出:
这样就可以了。虽然它不是特别有效,但是对于一次性的,它应该可以
select x.id, sum(coalesce(y.value1,y.id,0))
from sample x
left outer join sample y on x.id &g
我有一个基于此模板构建的小爱好web应用程序:
它使用ElephantSQL的免费层(5个连接),在Zeit Now v2无服务器功能上运行,并且Postgres连接一直不足(“对于角色“djsktctf””)
我正在使用deathNPM来关闭连接-这在/api/graphql/index.js中:
const { ApolloServer, gql } = require('apollo-server-micro')
const { config } = require('../../conf
目前,我正在尝试使用postgres:latest映像创建用于复制的PostgreSQL部署
默认情况下,配置文件位于数据目录/var/lib/postgresql/data中。为了使复制工作,我需要数据目录为空,但这意味着我必须将配置文件保存在其他地方
关于:
如果希望将配置文件保留在数据目录以外的其他位置,则postgres-D命令行选项或PGDATA环境变量必须指向包含配置文件的目录,并且必须在postgresql.conf(或命令行)中设置data_directory参数以显示数据目录的
我使用的是postgresql11version
我想实现一个以图层名(表)、列名和id为参数的函数
create or replace function test(layer_name anyelement, field_name anyelement, object_id text)
returns setof anyelement
language plpgsql
as $function$
begin
return query execute forma
主要问题:根据PostgreSQL/PostGIS表,我有几个视图,以及通过查询其他视图创建的最终物化视图。我需要一个快速和可更新的最终结果(即MV)在QGIS项目中使用
我的目标是更新起始表,用新的(很多)值覆盖它,并希望有更新视图和物化视图。我使用QGIS DB管理器覆盖现有的表,但我得到一个错误,因为mv依赖于它。若我删除mv,覆盖表格,然后重新创建mv,一切正常,但我希望尽可能避免手动操作
有没有更好的方法来实现我的目标
另一个问题:如果我在更新/插入/删除表中的值时设置了一个触发器来刷
我在postgresql中有两个表-系统和条件。
所有条件都将有一个systemID。
所有条件都将有一个字段“publishedStatus”
我的任务是获取具有关联“已发布”条件计数的所有系统
const allSystem = await db.System.findAll({
subQuery: false,
attributes: ["id", "title", [db.sequelize.fn(&
我有一个应用程序可以在某些PC上正常工作,但当我在新PC(Windows 10)上尝试它时,它会引发一个错误,即无法加载libpq.dll
libpq.dll有哪些依赖项?。使用我的应用程序复制以下库:
libcrypto-1_1.dll
libiconv-2.dll
libintl-8.dll
libpq.dll
libssl-1_1.dll
除了那些图书馆,我还需要分发其他图书馆吗
谢谢。这取决于libpq是如何构建的。
您可以使用检查应用程序加载的DLL。
(视图->“显示下窗格”和视图
我得到以下错误:
ERROR: must be owner of materialized view mv_sessions
SQL state: 42501
尝试刷新我的物化视图时:
REFRESH MATERIALIZED VIEW CONCURRENTLY partners.mv_sessions;
CREATE OR REPLACE FUNCTION partners.refresh_mv_sessions()
RETURNS TRIGGER
SECURITY DEFINER
AS