Tag: postgresql

PostgreSQL LIKE查询性能变化

我已经看到在我的数据库中的特定表LIKE查询响应时间相当大的变化。 有时我会在200-400毫秒(非常可接受的)内得到结果,但有些时候可能需要多达30秒才能返回结果。 我知道LIKE查询是非常耗费资源的,但我不明白为什么会有这么大的响应时间差异。 我已经在owner1字段上构build了一个btree索引,但我不认为这对LIKE查询有帮助。 任何人有任何想法? 示例SQL: SELECT gid, owner1 FORM parcels WHERE owner1 ILIKE '%someones name%' LIMIT 10 我也试过: SELECT gid, owner1 FROM parcels WHERE lower(owner1) LIKE lower('%someones name%') LIMIT 10 和: SELECT gid, owner1 FROM parcels WHERE lower(owner1) LIKE lower('someones name%') LIMIT 10 有类似的结果。 表行数:约95,000。

PostgreSQL列名是否区分大小写?

我有一个数据库表,说Postgres的persons有一个列名称,说: "first_Name"的另一个团队传下来。 现在我试图用PG命令来查询这个列名的这个表。 select * from persons where first_Name="xyz"; 它只是返回 错误:列“first_Name”不存在 不知道我是在做一些愚蠢的事情还是有解决这个问题的方法,我失踪了?

在PostgreSQL中用单引号插入文本

我有一个表test(id,name) 。 我需要插入的值如: user's log , 'my user' , customer's 。 insert into test values (1,'user's log'); insert into test values (2,''my users''); insert into test values (3,'customer's'); 如果我运行上述任何一个语句,则会出现错误。 如果有任何方法正确地做到这一点,请分享。 我不想要任何准备好的陈述。 是否有可能使用sql转义机制?

优化GROUP BY查询以检索每个用户的最新logging

我在Postgres 9.2中有下面的表格(简化forms) CREATE TABLE user_msg_log ( aggr_date DATE, user_id INTEGER, running_total INTEGER ); 它每个用户和每天最多包含一条logging。 300天内每天将会有大约50万条logging。 每个用户的running_total总是在增加。 我想在特定date之前有效地检索每个用户的最新logging。 我的查询是: SELECT user_id, max(aggr_date), max(running_total) FROM user_msg_log WHERE aggr_date <= :mydate GROUP BY user_id 这是非常缓慢的。 我也试过了: SELECT DISTINCT ON(user_id), aggr_date, running_total FROM user_msg_log WHERE aggr_date <= :mydate ORDER BY user_id, aggr_date DESC; 它有相同的计划,同样缓慢。 到目前为止,我在user_msg_log(aggr_date)上有一个索引,但没有多大帮助。 有没有其他的指标,我应该用来加快这一点,或者任何其他方式来实现我想要的?

重构PL / pgSQL函数以返回各种SELECT查询的输出

我写了一个函数,输出一个PostgreSQL SELECT查询很好地形成了文本forms。 现在我不想输出一个文本了,但实际上运行生成的SELECT语句对数据库并返回结果 – 就像查询本身一样。 我到目前为止: CREATE OR REPLACE FUNCTION data_of(integer) RETURNS text AS $BODY$ DECLARE sensors varchar(100); — holds list of column names type varchar(100); — holds name of table result text; — holds SQL query — declare more variables BEGIN — do some crazy stuff result := 'SELECT\r\nDatahora,' || sensors || '\r\n\r\nFROM\r\n' || […]

臭名昭着的java.sql.SQLException:找不到合适的驱动程序

我试图添加一个数据库启用的JSP到现有的Tomcat 5.5应用程序(GeoServer 2.0.0,如果有帮助的话)。 该应用程序本身与Postgres会谈很好,所以我知道数据库已经启动,用户可以访问它,所有这些好东西。 我想要做的是在我添加的JSP中的数据库查询。 我已经很好的使用了Tomcat数据源示例中的configuration示例。 必需的标签库位于正确的位置 – 如果我只有标签库引用,就不会出现错误,因此它正在查找这些JAR。 postgres jdbc驱动程序postgresql-8.4.701.jdbc3.jar位于$ CATALINA_HOME / common / lib中。 这是JSP的顶部: <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <sql:query var="rs" dataSource="jdbc/mmas"> select current_validstart as ValidTime from runoff_forecast_valid_time </sql:query> $ CATALINA_HOME / conf / server.xml中的相关部分,在<Host>中又是在<Engine> : <Context path="/gs2" allowLinking="true"> <Resource name="jdbc/mmas" type="javax.sql.Datasource" auth="Container" driverClassName="org.postgresql.Driver" maxActive="100" maxIdle="30" maxWait="10000" […]

LATERAL和PostgreSQL中的子查询之间有什么区别?

由于Postgres具有执行LATERAL连接的function,因此我一直在阅读,因为我目前正在为我的团队进行复杂的数据转储,导致大量低效的子查询,使整个查询花费四分钟或更长时间。 我明白, LATERALjoin可能会帮助我,但即使从Heap Analytics阅读这样的文章之后,我仍然不太理解。 什么是LATERAL连接的用例? LATERAL连接和子查询有什么区别?

PostgreSQL unnest()与元素编号

当我有一个分隔值的列,我可以使用unnest()函数: myTable id | elements —+———— 1 |ab,cd,efg,hi 2 |jk,lm,no,pq 3 |rstuv,wxyz select id, unnest(string_to_array(elements, ',')) AS elem from myTable id | elem —+—– 1 | ab 1 | cd 1 | efg 1 | hi 2 | jk … 我怎样才能包含元素号码? 即: id | elem | nr —+——+— 1 | ab | 1 1 | […]

select其他表中不存在的行

我有两个postgresql表: table name column names ———– ———————— login_log ip | etc. ip_location ip | location | hostname | etc. 我想从login_log获取login_log中没有一行的每个IP地址。 我试过这个查询,但它引发了一个语法错误。 SELECT login_log.ip FROM login_log WHERE NOT EXIST (SELECT ip_location.ip FROM ip_location WHERE login_log.ip = ip_location.ip) ERROR: syntax error at or near "SELECT" LINE 3: WHERE NOT EXIST (SELECT ip_location.ip` 我也想知道,如果这个查询(使其工作调整)是最好的查询为此目的。

SQL JOIN和不同types的JOIN

我在SO和其他一些论坛上经历了许多线索。 所以我想我会总结“ 什么是SQL JOIN? ”和“ 什么是不同types的SQL JOIN? ”。