换句话说,是否可以声明一列VARCHAR(n)并使其估计大小不是n/2?
一个示例用例可能是存储 URL - 您希望大多数是相对的并且少于 20 个字符左右(例如“About/AboutUs”),但希望偶尔支持带有大量查询字符串参数的长 URL。
'+' 运算符在以下语句中的表现如何?
select + 'taco'; --Result is 'taco'
Run Code Online (Sandbox Code Playgroud)
它是与第一个字符串空白('' + 'taco')进行字符串连接,还是其他意思?
在 Oracle SQL Developer 中,有没有办法在 SQL 查询中包含 SQL 文件?就像\include{myfile.tex}LaTeX 中的命令一样。
例子:
file1.sql 包含 FROM my_table;file2.sql 包含 SELECT * \include{file1.sql}执行file2.sql从Oracle SQL Developer中应该是相当于执行SELECT * FROM my_table;。
我只是想知道是否存在插入/删除组合比更新其他插入函数更快的常见场景。
这是我的具体例子。
我必须使用一次包含 1000 条记录的页面更新数据库。(我无法合并页面)。
这些记录中约有 5% 或 50 行是需要“更新”而不是作为全新插入的重复项。
我认为,不是“基于 ID 更新,否则插入新行”的典型功能,“插入所有内容”并在最后一次性删除重复项可能会更快。
两个原因:
并行性。如果我希望多个进程同时处理这个任务,那么......如果我有一个很大的提交大小和同时搜索和更新 ID 的事务,我可能会遇到行锁。通过“插入所有内容”并稍后删除“旧”记录,我可以有无限的进程同时写入数据。
我觉得在最后优化一个大的“删除查找”很容易。它看起来像下面这样:
with CTE as (
select primary_id,update_date,
rn = row_number()over(partition by primary_id order by update_date desc)
from MyTable
)
delete from CTE where rn > 1
Run Code Online (Sandbox Code Playgroud)我的意思是性能提升是存在的——我只是想知道这是否违背了最佳实践。有人能明白为什么插入 + 删除重复项似乎比“更新,如果没有找到,插入”更快?
我可以看到一个危险是在数据加载运行时有一段时间表不准确(在删除之前)。但是在任何更新过程中,这种情况难道不是真的吗?
这也将是数据仓库的临时表,而不是实时使用的数据。我只是想知道为什么我没有经常看到这种方法。
我有一张有 260 万条记录的表。它看起来像这样:
email prject_name
rafael.nadal@xyz.com lab1
rafael.nadal@xyz.com lab2
rafael.nadal@xyz.com lab3
TEST@TEST.COM shift1
TEST@TEST.COM shift2
Run Code Online (Sandbox Code Playgroud)
但我希望我的桌子看起来像这样:
email project_name
rafael.nadal@xyz.com lab1, lab2, lab3
TEST@TEST.COM shift1, shift2, shift3
Run Code Online (Sandbox Code Playgroud)
我用过这个查询
select distinct email ,
STUFF((Select ','+project_name
from dbo.[UMG sent 2016] as T1
where T1.email=T2.email
FOR XML PATH('')),1,1,'') from dbo.[UMG sent 2016] as T2;
Run Code Online (Sandbox Code Playgroud)
它已经运行了5个小时。
如何加快流程?
下图很好地描述了 PostgreSQL 的主要概念:
我发现自己必须使用 Sybase ASE 15,我想知道 Sybase 中有哪些类似的概念。例如,从我目前所了解的情况来看,Sybase 缺乏模式的概念。所以一些问题是:
我有两个通过另一个(多对多)相关的表
这是模式摘录:
CREATE TABLE user (
user_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
email TEXT NOT NULL UNIQUE
);
CREATE TABLE alias (
alias_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
address TEXT NOT NULL UNIQUE
);
CREATE TABLE alias_member (
alias_id INTEGER NOT NULL,
user_id INTEGER NOT NULL,
PRIMARY KEY(alias_id, user_id),
FOREIGN KEY(alias_id) REFERENCES alias(alias_id) ON DELETE CASCADE,
FOREIGN KEY(user_id) REFERENCES user(user_id) ON DELETE CASCADE
);
Run Code Online (Sandbox Code Playgroud)
我有一个满足我需求的查询:
SELECT email
FROM
user,
alias,
alias_member
WHERE
user.user_id = alias_member.user_id
AND alias.alias_id = …Run Code Online (Sandbox Code Playgroud) 我对失败和成功都有登录审核。如何查看实际日志?它们位于何处?
https://docs.microsoft.com/en-us/sql/ssms/configure-login-auditing-sql-server-management-studio
有没有办法忽略服务帐户?
使用正确的数据类型对 SQL Server 有什么好处?
例子:
如今,有了现代计算,这真的很重要吗?
谢谢,
我只是遇到了必须在索引中包含一列的情况。这需要删除索引,然后重新创建它。这让我想到,这肯定是很多不必要的工作。
假设我先创建了新索引,然后删除了旧索引。让我们假设我有这表明旧索引将不会被丢弃,直到某种方式后,新的已创建了一个。
通过在创建新索引时使用旧索引,服务器会获得任何性能优势吗?
sql-server ×7
t-sql ×2
audit ×1
datatypes ×1
etl ×1
index ×1
insert ×1
mysql ×1
operator ×1
optimization ×1
parallelism ×1
performance ×1
sqlite ×1
sybase ×1