我有一个包含三列的表格。第一个product_id链接到另一个表,第二个att_id链接到另一个表,最后一个val_id链接到不同的表。
有相同的行product_id和val_id组合att_id。每个product_id可以有不同数量的val_id (如下例所示)。表看起来像:
| 产品编号 | 属性ID | 有效的 |
|---|---|---|
| 77 | 1 | 7 |
| 78 | 1 | 10 |
| 78 | 1 | 2 |
| 79 | 3 | 2 |
| 79 | 2 | 1 |
| 79 | 2 | 1 |
| 80 | 3 | 2 |
| 80 | 2 | 1 |
| 80 | 1 | 1 |
| 81 | 2 | 2 |
| 81 | 1 | 1 |
| 81 | 2 | 1 |
| 82 | 2 | 1 |
| 82 | 2 | 1 |
| 83 | 2 | 1 |
| 84 | 3 | 2 |
| 85 | 3 | 2 |
| 85 | 2 | 2 |
| 85 | 2 | 1 |
我的目标是选择等于 …
我已经配置了 Ola Hallengren 的备份和完整性检查脚本。
但是,我想了解是否需要设置 SQL Server 索引和统计维护脚本,因为我的 SQL 服务器在 SAN 基础架构上运行,并且我读到将填充因子设置为小于 100% 没有任何好处,或者当数据文件位于 SAN 存储上时执行索引重组或索引重建。任何建议将被认真考虑。
统计信息维护是由 SQL Server 自动完成的,因此我看不出配置 Ola 脚本进行统计信息维护有任何好处。
请注意,SAN存储意味着涉及多个磁盘,数据(无论表是否有索引[堆]或聚集索引或非聚集索引)分散在多个磁盘上。
我正在观察一个简单的语句,该语句正在查询一个表并访问多个索引来检索数据:
SELECT DISTINCT
feld16,
zahl4,
feld12,
feld19 FROM
object1 WHERE
(deleted = 0 or deleted IS NULL)
Run Code Online (Sandbox Code Playgroud)
查询执行计划可以在Brent Ozar 的 Paste The Plan网站上找到,图形表示如下:
该表由包含各种数据的 82 列组成。列中数据的分布deleted为:
deleted | Number of records
---------+-------------------
0 | 71'620'068
NULL | 10
a value | 59'673
Run Code Online (Sandbox Code Playgroud)
结果集包含大约。大约 6400 万行。7100 万行与搜索谓词匹配WHERE (deleted = 0 or deleted IS NULL)。这是因为DISTINCT遗漏了 700 万条记录。
为了加快速度,我正在考虑添加一个新索引。最初我以为我有足够的知识来添加足够的索引,但我开始重新审视自己。
以下哪个索引定义(可能)是适当的解决方案?
CREATE NONCLUSTERED INDEX [IDXNew] ON [schema_owner].[object1]
(
[deleted] ASC,
[feld16] ASC,
[zahl4] …Run Code Online (Sandbox Code Playgroud) 我们如何根据年龄删除所有数据库。
如果我使用今天的日期并保留 2 个月,则列表将带有以下查询,现在我想删除所有带有查询输出的数据库。
SELECT name as [database] , database_id, create_date
FROM sys.databases where create_date <= '20190726' AND name NOT IN ('Master','Model','MSDB','tempdb')
Run Code Online (Sandbox Code Playgroud)
以下脚本无法处理错误:
DROP DATABASE VM_P
消息 2812,级别 16,状态 62,第 15 行
找不到存储过程“DROP DATABASE VM_P。
DECLARE @DBName VARCHAR (64)
DECLARE @SQL VARCHAR (255)
DECLARE DROPDB CURSOR FOR
SELECT name FROM sys.databases
WHERE create_date <= '20190726'
AND name NOT IN ('master','model','msdb','tempdb','distribution','ReportServer','ReportServerTempDB')
OPEN DROPDB
FETCH next FROM DROPDB INTO @DBName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = 'DROP DATABASE …Run Code Online (Sandbox Code Playgroud) 我有 2 个查询
SELECT *
FROM sys.dba_indexes
WHERE Table_Name = 'XDB$RESOURCE'
Run Code Online (Sandbox Code Playgroud)
和
SELECT *
FROM sys.dba_tables
WHERE Table_Name = 'XDB$RESOURCE'
Run Code Online (Sandbox Code Playgroud)
是否有任何原因导致表格不显示sys.dba_tables?据我所知,所有表格都应该显示在这里,因此为什么我使用这个而不是all_tables.
Oracle 中的索引可以针对已删除的表吗?
sys.dba_tables 是否显示与您拥有的访问权限相关的数据,如果是,是否有任何表只带回一半的数据?
Oracle 相对较新,任何解释或建议表示赞赏。
是否有一种既定的方法或工具可用于仅通过测试它发送到数据库的查询来对应用程序执行渗透测试?
例如,如果我有一堆 SQL Server 托管各种网站,并且通过一个未参数化的查询,有没有办法检测到这些?
可能不安全的示例查询:
SELECT x,y,z FROM logins WHERE username = 'xx' and password = 'yyy'
Run Code Online (Sandbox Code Playgroud)
...相反,我希望一个安全的应用程序可能正在使用sp_executesql.
如果我有一个类型为binary或 的列varbinary,我将数据想象为一个位序列。例如,对我来说,01001(作为基数 2 的数字)可能是列中的有效值是有意义的binary(5)。
为什么以这种方式插入和显示二进制数据并不简单?
例如,为什么 SSMS 将二进制数据转换为十六进制,而不是显示一系列 1 和 0(在我看来,这更容易推理)?
这是我上一个问题的后续/是否可以在 PostgreSQL 中插入货币数据类型的未格式化数据
我可以通过将其类型转换为数字来读取货币数据
SELECT '52093.89'::money::numeric
Run Code Online (Sandbox Code Playgroud)
它会给出不一致的数据,四舍五入等吗?
根据 ISO 标准,money数据类型大小为 (19,4) 但为什么 PostgreSQL 返回大小为 2147483647?这个大小取决于语言环境吗?
使用money数据类型来存储/检索特定于区域设置的值是个好主意吗?如果不是,什么时候money数据类型最合适?
我必须在money某些情况下使用数据类型。我担心的是,如果我将money数据类型值视为十进制值,我会遇到任何问题吗?
我不关心特定于语言环境的值,例如符号、数字和十进制分组等。我可以根据lc_monetary设置存储货币数据类型值并通过将其类型转换为读取numeric吗?
为什么 SQL 查询/执行计划通常从右到左解释?
英语是一种从左到右的书面语言。即使出于某种原因 SQL 向后制定计划,数据仍然只是屏幕上的像素。
没有理由不从左到右显示它。
我知道有很多关于多对多关系的问题,但似乎没有一个对我有用,因为它更多地是关于概念而不是代码的问题。所以我需要澄清一下如何实现我的想法。
我正在尝试制作乐高数据库。我有可以有很多小人仔的套装。某些 MINIFIGURES 也可以出现在许多 SETS 中。我是这样做的,在 Excel(csv) 文件中。它是 SETS “表”。
Id Set_Name Set_Id Minifigures_List
1 Spider-Man's Doc Ock Ambush 6873 Doc Ock, Spider-Man, Iron Fist
2 Spider-Man: Spider-Cycle Chase 76004 Spider-Man, Venom, Nick Fury
3 Electro 5002125 Electro
.....
Run Code Online (Sandbox Code Playgroud)
我的数据库实现的第一步是创建一个SETS表。
CREATE TABLE Sets (
ID int NOT NULL AUTO_INCREMENT,
Set_Name varchar(255),
Set_Id varchar(255),
);
Run Code Online (Sandbox Code Playgroud)
然后插入数据:
Insert into Sets (Set_Name, Set_Id)
VALUES ('Spidermans Doc Ock Ambush' , '6837'),
('Spider-Man: Spider-Cycle Chase' , '76004')
('Electro', '5002125')
;
...
Run Code Online (Sandbox Code Playgroud)
下一步是创建一个MINIFIGS …
sql-server ×6
oracle ×2
encoding ×1
index ×1
index-tuning ×1
maintenance ×1
many-to-many ×1
mariadb ×1
money ×1
oracle-19c ×1
pgadmin ×1
postgresql ×1
schema ×1
security ×1
ssms ×1
table ×1
varbinary ×1