问题列表 - 第7页

哪里有一些有用的 SQL 谜题可以在工作场所教授 SQL?

我正在寻找初学者和中级 SQL 谜题,我可以指导学员练习。

我知道http://sqlzoo.net/是一个很好的资源 - 你还有什么可以推荐的吗?

learning

104
推荐指数
8
解决办法
4万
查看次数

存储与计算聚合值

是否有任何指导方针或经验法则来确定何时存储聚合值以及何时动态计算它们?

例如,假设我有用户可以评分的小部件(请参阅下面的架构)。每次我显示一个小部件时,我都可以从Ratings表格中计算出平均用户评分。或者,我可以将平均评分存储在Widget表格中。这将使我不必在每次显示小部件时计算评分,但是每次用户对小部件进行评分时我都必须重新计算平均评分。

Ratings       Widgets
---------     -------
widget_id     widget_id
user_id       name              
rating        avg_rating  <--- The column in question
Run Code Online (Sandbox Code Playgroud)

mysql database-design aggregate

104
推荐指数
2
解决办法
3万
查看次数

复合索引是否也适用于第一个字段的查询?

假设我有一个包含字段A和的表B。我在A+上进行常规查询B,所以我在 上创建了一个复合索引(A,B)。A复合索引是否也会对查询进行全面优化?

此外,我在 上创建了一个索引A,但 Postgres 仍然只使用复合索引来查询A。如果前面的答案是肯定的,我想这并不重要,但是为什么它默认选择复合索引,如果单个A索引可用?

postgresql performance index database-design index-tuning

104
推荐指数
1
解决办法
4万
查看次数

即使第一个参数不为 NULL,SQL Server 是否会读取所有 COALESCE 函数?

我正在使用 T-SQLCOALESCE函数,其中第一个参数在大约 95% 的运行时间不会为空。如果第一个参数是NULL,第二个参数是一个相当漫长的过程:

SELECT COALESCE(c.FirstName
                ,(SELECT TOP 1 b.FirstName
                  FROM TableA a 
                  JOIN TableB b ON .....)
                )
Run Code Online (Sandbox Code Playgroud)

例如,如果 ,c.FirstName = 'John'SQL Server 仍会运行子查询吗?

我知道使用 VB.NETIIF()函数,如果第二个参数为 True,代码仍会读取第三个参数(即使不会使用它)。

null sql-server coalesce

102
推荐指数
6
解决办法
2万
查看次数

将“tbl”前缀添加到表名真的是个问题吗?

我正在观看一些 Brent Ozar 视频(例如这个视频),他建议不要在表格前加上‘tbl’或‘TBL’。

在网上我发现一些博客说它没有增加文档,而且“阅读它需要更长的时间”。

问题和考虑

  • 这真的有问题吗?因为自从我的第一份 dba 工作(高级 DBA 告诉我为组织这样做)以来,我就在表前加上了 'tbl' 前缀。
  • 这是我需要摆脱的东西吗?我做了一些测试,复制了一个非常大的表并给它加上了 'tbl' 前缀,同时保持另一个没有它,我没有注意到任何性能问题。

sql-server best-practices naming-convention

101
推荐指数
13
解决办法
3万
查看次数

何时使用 NULL,何时使用空字符串?

我主要对 MySQL 和 PostgreSQL 感兴趣,但您可以大致回答以下问题:

  • 是否存在区分空字符串和 NULL 有用的逻辑场景?
  • 将空字符串存储为...的物理存储含义是什么?

    • 空值?
    • 空字符串?
    • 另一个领域?
    • 还有什么办法吗?

null empty-string feature-comparison

100
推荐指数
5
解决办法
10万
查看次数

在具有活动读写的实时系统上执行 mysqldump 的最安全方法?

我不确定这是否属实,但我记得读过你是否在 linux 中运行以下命令

mysqldump -u username -p database_name > backup_db.sql
Run Code Online (Sandbox Code Playgroud)

在对数据库进行读取和写入时,转储可能包含错误。

命令中是否有特定选项mysqldump可确保在实时系统上安全完成此操作?我可以对我们的用户禁用读/写几秒钟(数据库 <50MB)

mysql mysqldump backup linux

99
推荐指数
2
解决办法
16万
查看次数

数据库与用户与架构之间的区别

我真的对术语数据库、用户和模式感到困惑。谁能解释一下它们之间的区别(如果是的话)?

如果它们相同,那么它们之间有什么相似之处?我们如何使用它们?我们如何创建它们?

schema oracle users

98
推荐指数
4
解决办法
25万
查看次数

如何将 JSON 数组转换为 Postgres 数组?

我有一个data类型的列,json其中包含这样的 JSON 文档:

{
    "name": "foo",
    "tags": ["foo", "bar"]
}
Run Code Online (Sandbox Code Playgroud)

我想将嵌套tags数组转换为连接字符串 ( 'foo, bar')。array_to_string()从理论上讲,使用该函数很容易做到这一点。但是,此功能不接受json输入。所以我想知道如何将这个 JSON 数组变成 Postgres 数组(类型text[])?

postgresql array postgresql-9.3 json

97
推荐指数
4
解决办法
28万
查看次数

每组检索 n 行

我经常需要从结果集中的每个组中选择一些行。

例如,我可能想列出每个客户最近的“n”个最高或最低订单值。

在更复杂的情况下,要列出的行数可能因组而异(由分组/父记录的属性定义)。这部分绝对是可选的/为了额外的学分,而不是为了劝阻人们回答。

在 SQL Server 2005 及更高版本中解决这些类型问题的主要选项是什么?每种方法的主要优点和缺点是什么?

AdventureWorks 示例(为清晰起见,可选)

  1. 列出表中五个最近的交易日期和 ID TransactionHistory,每个产品以从 M 到 R 的字母开头。
  2. 再次相同,但n每个产品都有历史记录行,其中n是DaysToManufactureProduct 属性的五倍。
  3. 同样,对于每个产品恰好需要一条历史记录行的特殊情况(最近的单个条目由TransactionDate, .tie-break on TransactionID.

sql-server t-sql greatest-n-per-group

97
推荐指数
6
解决办法
7万
查看次数