我正在使用PostgreSQL,并有以下类型的查询:
SELECT * from t
WHERE a > 30 AND b < 20
其中a和b是表t的列。我有索引列a和b。这会加快查询速度还是我需要添加一个多索引(a, b)?
这个职位提到,多索引加速了a = 3 and b = 4和a = 3类型的查询,但我不确定是否同样适用于比较。
另外,官方的PostgreSQL文档说它可以加速SELECT name FROM test2 WHERE major = constant AND minor = constant类型的查询,但是在后面的文本中,它说了很多我并不真正理解的事情,因
假设您有一个包含一些索引的表:
create table mail
(
identifier serial primary key,
member text,
read boolean
);
create index on mail(member_identifier);
create index on mail(read);
如果您现在查询具有独立索引的多个列,它会使用这两个索引吗?
select * from mail where member = 'Jess' and read = false;
也就是说,PostgreSQL是否可以决定首先使用
我正在尝试优化这些慢速查询(请原谅SQL与Rails混合使用):
WHERE name ILIKE %<the user's search text>%WHERE lower(NAME) LIKE :search OR lower(BARCODE) LIKE :search OR lower(SKU) like :search, search: "%<the user's search text>%"
如您所见,这些都是通配符查询,%在开始和结束,这意味着正常的索引是无用的。该表由条目组成,当用户没有很多项时,查询就会很好,但是当用户有很
在PostgreSQL上,我尝试遍历可选的查询结果。 我有一个有效的解决方案: FOR target
IN query
LOOP
statements
END LOOP; 但我想做这样的事情: FOR target
IN (IF condition_1
THEN query_1
ELSE query_2
END IF)
LOOP
statements
END LOOP; 但是我不能去上班。我也尝试过这个版本,但它也不起作用: FOR target
IN (CASE
WHEN condition_1 THEN query_1
ELSE q
我是SQL的新手.... 我有一个表,其中有一个列"status",其中包含已批准/已拒绝订单的列表。如何编写一个查询,在一个表中给出两个列的结果:“总批准订单”和“总订单”? 我知道如何在两个单独的查询中提取这些结果,即: SELECT COUNT(status) FROM orders WHERE status = 'Approved';
SELECT COUNT(status) FROM orders; 但不确定如何对一个表/结果执行此操作
这是理论/最佳实践征求意见的请求。
我已经习惯于将WHERE子句和连接条件视为“托管”任何业务逻辑的好地方,这些业务逻辑将使我的查询尽可能精确。
但我注意到,将不相关的业务逻辑添加为联接条件可能违反“最佳实践”。例如:
SELECT a.Id, b.Id
FROM foo AS a
LEFT OUTER JOIN bar AS b ON a.Id = b.Id
AND GETDATE() >= "18/5/2011"
这个例子有点幼稚:在现实生活中,调用者确实需要额外的条件,如果没
我有一个photos表,我试图通过使用WHERE子句过滤数据从另一个表中插入一个新列。下面是我要执行的查询:
ALTER TABLE photos ADD COLUMN new_count BIGINT;
INSERT INTO photos (new_count)
SELECT c.cnt
FROM c
WHERE
c.created = photos.created;
但结果是,我得到了一个错误:
Error : ERROR: invalid reference to FROM-clause entry for table "photos"
LINE 5:
我需要一些帮助,将这2个sql查询合并为一个,并获得相同的结果。
数据库结构:
Table: sqldb1_meta
Columns: ipaddress, data
第一个查询:
SELECT * FROM sqldb1_meta WHERE ipaddress LIKE '%10.10.1.2%'
从第一个查询中,我得到了所有与10.10.1.2匹配的内容,另一列有此条目的数据,在本例中是‘92’“
第二个查询:
SELECT * FROM sqldb1_meta WHERE data LIKE '92'
现在我得到了我想要显示的所有数据,所有值为92的数据
背景:查询中的一个大表50M+所有列都被编入索引。
当我执行这样的查询时:
select * from table where A=? order by id DESC limit 10;
在语句中,A、id都被索引。
现在,令人困惑的事情发生了:
where返回的行越多,整个sql成本的时间越短,返回的行where越少,整个sql的成本就越多。
我在这里猜测: postgres首先做order by,然后是where,所以当目标行集很小时,在orderd索引中查找10行需要花费更多时间(比如在海滩上查找10个特定的沙子);相反,如果目标行集很大,很容易找到前10个。
是对的吗?还是还有别的
因此,我有一个巨大的.csv数据文件夹,其中包含一列关于时间长短的列,其中单元格为'x min y秒‘(例如15分钟29秒)或'x小时y分钟z秒’(例如1小时48分28秒)。单元格由文本格式化。
我想批量将它们更改为秒数,但是我不知道从哪里开始。我无法以另一种格式获取数据。
我想用“hrs”、“min”或“sec”作为分隔符,但我不知道如何从那里移动。我还考虑过使用“”作为分隔符,但是第一列会根据时间长短用小时或分钟填充。
我还考虑过使用PostgreSQL的SELECT EXTRACT(EPOCH FROM INTERVAL '5 days 3 hours')
如何在Postgresql中查询(SELECT),使日期不同的列的结果在当前周的周日到周六之间。 查询伪例: SELECT * FROM table WHERE datecolumn BETWEEN CURRENT WEEK 在另一个查询中,我得到了一年中的第几周。如何选择这些日期,并在WHERE子句中应用特定年份中的特定周数。 查询伪例: SELECT * FROM table WHERE datecolumn BETWEEN WEEK15 FROM year 2020
因此,我有一个自定义Postgresql查询,它检索指定经度纬度半径内的所有行,如下所示:
SELECT *,
earth_distance(ll_to_earth($1,$2), ll_to_earth(lat, lng)) as distance_metres
FROM RoomsWithUsers
WHERE earth_box(ll_to_earth($1,$2), $3) @> ll_to_earth(lat, lng)
ORDER by distance_metres;
在我的节点服务器中,每当查询中的行数发生变化时,我都希望能够得到通知。我已经研究过使用Node库,比如,
我已经搜索过,但我没有找到任何好的答案,实际上我得到了不同的值,但问题是,我正在对两列应用查询,它应该返回不同的值,但它正在返回这些值。
Au |FAA303
Au |FAA505
在我的表中,我只想显示Au一次,因为它现在与FAA303和FAA505相关联
我想要的是这样
Au |FAA303
|FAA505
这是我在postgresql中的查询。我对数据库查询有点陌生。
select distinct column1, column2
from table_name
我有以下查询,它在Oracle和SQL Server2008上都运行得很好,但它似乎不能在PostgreSQL上运行。该查询旨在返回与给定条件匹配的记录计数。谁能解释一下原因,并提供一个解决方案,如何修改这个查询,使其产生预期的结果。
查询:
select count(*)
from tma_notices
where TNOT_NOTICE_TYPE ='0400'
and TNOT_NOTICE_STATUS = 'OK'
and tnot_notice_id >=
(
select NOTICE_NUM_AT_MID
我在PostgreSQL中有两个表,一个是1600万行,另一个是大约3000行。它们都共享两个公共ID,但较大的表有数千个相同ID的迭代。
我试图用以下几个条件进行左连接:
SELECT LT.Col1, LT.Col2, LT.Col3, ST.Col1, ST.Col2
FROM large_table as LT
LEFT JOIN small_table as ST
ON LT.id1 = ST.id1 AND LT.id2 = ST.id2
WHERE LT.Col1 > 30
AND LT.Col2 > 2
AND LT.Col3 BETWEEN '11:00:
由于它的地理功能,我正在将我的数据库从MySQL迁移到PostgreSQL/PostGIS,而曾经如此微不足道的SQL现在正变得非常缓慢。
在本例中,我使用嵌套查询来获取两列中的结果,第一列中有ID,第二列中有计数结果,并将这些结果插入到table1中。编辑:这是我需要在PostgreSQL中工作的原始MySQL工作代码:
UPDATE table1 INNER JOIN (
SELECT id COUNT(*) AS cnt
FROM table2
GROUP BY id
) AS c ON c.id = table1.id
SET table1.cnt = c.cnt
结
我正在为PostgreSQL数据库创建索引。我想知道用于对PostgreSQL语句中的结果进行排序的列是否应该包括在索引中。 假设我已经在PostgreSQL数据库中创建了一个标签为'table1‘的表,其中包含标签为'col1’、'col2‘和'col3’的列。 我想执行以下查询: SELECT * FROM table1 WHERE col1 = 'word1' AND col2 = 'word2' ORDER BY col3; 我知道此搜索的索引应该包括WHERE子句中引用的所有列,因此,在本例中,索引将包括col1和co