我必须有 2 个表,第一个是带有 3.000.000 条记录的 MEMORY 表,第二个现在是空的。这些表的结构是相同的,都有一个 int(11) 主键,两个表的主键字段都不同(两个表中不可能有相同的键)
如果我查询第一个表,我会在 0.1 秒内得到答案,那么第二个表的查询会立即 0.01 秒。但是将 2 与 UNION ALL 合并非常慢(1 分 21 秒)。
Run Code Online (Sandbox Code Playgroud)SELECT * FROM memtable1 LIMIT 1000(0.1 秒)
Run Code Online (Sandbox Code Playgroud)SELECT * FROM table2 LIMIT 1000(0.01 秒)
Run Code Online (Sandbox Code Playgroud)SELECT * FROM memtable1 UNION ALL SELECT * FROM table2 LIMIT 1000(1分21秒)
如何提高查询速度?
我有一张Policies桌子。
现在我需要在10 月份获得所有待处理Policies的 a和所有已发出的a 。pendDateOctoberPoliciesissueDate
我在用着postgreSQL 9.6。这些日期可以为空,所以我不能使用简单的AND. 那个月我只需要 和pending,issued所以 OR 不起作用。
我解决了两个查询,但现在正在添加更多状态,我想以某种方式进行整合。可能的?
我是 Postgres 的新手,我意识到以前有人问过类似的问题,但是,我正在努力使这个查询工作:
SELECT p_search.id, count(kia.image_id) AS count
FROM (SELECT id,
keyword,
to_tsvector('english',keyword) AS tskw
FROM keyword) AS p_search
LEFT JOIN keyword_image_assoc AS kia
ON kia.keyword_id = p_search.id
WHERE p_search.tskw @@ plainto_tsquery('english','resident life')
OR p_search.tskw @@ plainto_tsquery('english','wofford')
GROUP BY kia.image_id
ORDER BY count desc
Run Code Online (Sandbox Code Playgroud)
对于上下文,我有三个表:
image其中有一个id作为主键keyword它具有id作为主键,keyword它是一个表示关键字的字符串keyword_image_assoc其中有一个id,image_id并且keyword_id它是用来关联图像和关键字规范地。如果我添加p_search.id到GROUP BY子句中,结果不正确 -count总是 1。有没有办法对结果进行分组,以便image_ids 具有匹配关键字的数量?
我正在寻找两列count- 匹配关键字的数量和 …
我创建了一个带有大写字母的架构,如下所示:
CREATE SCHEMA "requeteSQL" AUTHORIZATION ......;
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试GRANT一些特权时,例如:
GRANT SELECT ON ALL TABLES IN SCHEMA requetesql TO ....;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Run Code Online (Sandbox Code Playgroud)ERROR: schema "requetesql" does not exist
我想将 'IS NULL' 设置为变量并在 WHERE 子句中使用它。我会将许多带有相同 WHERE 子句的表合并在一起,并希望灵活地为我的yearCompleted列使用一个变量- 请参见下面的示例 -
DECLARE @YEARCOMPLETED
SET @YEARCOMPLETED = NULL
SELECT * FROM TABLE1
WHERE yearCompleted = @YEARCOMPLETED
UNION ALL
SELECT * FROM TABLE2
WHERE yearCompleted = @YEARCOMPLETED
Run Code Online (Sandbox Code Playgroud)
在这种情况下,是否可以使用变量找到 yearCompleted 为 NULL 的行?
我有3张桌子。
我需要使用特定WHERE条件检查这些表中是否存在特定标识符。我需要从所有 3 个表中获取数据。
我已经试过LEFT JOIN,RIGHT JOIN而且FULL OUTER JOIN但我无法得到中间表的值。
我的查询尝试是:
Select t1.col1, t2.col2, t3.col3
from t1
left outer join t2
on t1.id=t2.id
full outer join t3
on t1.id=t3.id
where t.id= '101';
Run Code Online (Sandbox Code Playgroud)
我无法获得仅存在于 t2 表中的值。
在我的情况下,我有一个文件file_01.mdf并且file_02.ndf在 1 个文件组下,如果file_01.mdf已经满了(没有启用自动增长),file_01.mdf如果尝试在其中添加数据,它会出错吗?
尝试从 SQL Server Management Studio v18.5 更新某些行时出现此错误:
消息 50000,级别 16,状态 1,过程 UPDATElimit,第 7 行 [批处理起始行 0] 要同时处理许多行。减少并重试。Msg 3609, Level 16, State 1, Line 1 事务在触发器中结束。该批次已中止。
我怎样才能绕过这个限制?
触发代码:
ALTER TRIGGER [dbo].[UPDATElimit]
on [dbo].[table]
FOR UPDATE
AS
BEGIN
IF (select count(*) from inserted) > 1000
BEGIN
RAISERROR('To many rows being processed at one. Reduce and try again.', 16, 1)
ROLLBACK
END
END
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 SQL Server 上完成此操作。带有数据的最简单的表结构如下所示。
Table: Blog
BlogID | Title
-------+--------
1 | FirstBlog
23 | Pizza
Table: User
UserID | Name
-------+-----------
123 | james
444 | John
Table: UserBlogMapping
UserBlogMappingID | BlogID | UserID
------------------+--------+------
1 | 1 | 123
Run Code Online (Sandbox Code Playgroud)
我想在一个 SQL 查询中获取FormID和UserBlogMappingID。如果提供UserID的不在映射表中,则返回零,否则返回有效的userBlogMappingID。我正在尝试运行以下查询,但它不正确。
SELECT
B.BlogID,
BUM.BlogUserMappingID
FROM
Blog AS B
LEFT JOIN BlogUserMapping AS BUM ON B.BlogID = BUM.BlogID
WHERE
(B.BlogID = 23) -- it exists in the table
AND BUM.userID …Run Code Online (Sandbox Code Playgroud) Msg 139, Level 15, State 1, Procedure sp_BlitzFirst, Line 0 [Batch Start Line 3]
Cannot assign a default value to a local variable.
Msg 195, Level 15, State 10, Procedure sp_BlitzFirst, Line 120 [Batch Start Line 3]
'SYSDATETIMEOFFSET' is not a recognized built-in function name.
Msg 195, Level 15, State 10, Procedure sp_BlitzFirst, Line 130 [Batch Start Line 3]
'SYSDATETIMEOFFSET' is not a recognized built-in function name.
Msg 195, Level 15, State 10, Procedure sp_BlitzFirst, Line 135 [Batch Start Line …Run Code Online (Sandbox Code Playgroud) 我在 DB2 中有一个表(表 A),其中需要根据表 B 中的值更新列。
例如
表 A有两列和以下数据。
ID LOGIN
01 DONALD.TRUMP
02 BARACK.OBAMA
03 ABRAHAM.LINCOLN
Run Code Online (Sandbox Code Playgroud)
表B具有以下数据。
ID OLDLOGIN NEWLOGIN
01 DONALD.TRUMP DONALD.T
02 ABRAHAM.LINCOLN ABRAHAM.LIN
Run Code Online (Sandbox Code Playgroud)
我想更新表 A 的 LOGIN 值,如果它们存在于表 B 的 OLDLOGIN 中,则为它们提供 NEWLOGIN 值。
所以表A中的最终结果应该如下所示
ID LOGIN
01 DONALD.T
02 BARACK.OBAMA
03 ABRAHAM.LIN
Run Code Online (Sandbox Code Playgroud)
最简单的方法是什么?
sql-server ×4
postgresql ×3
join ×2
db2 ×1
filegroups ×1
mysql ×1
null ×1
query ×1
schema ×1
t-sql ×1
trigger ×1