标签: query

我们如何分析应用程序在 SQL Server 中所做的一切?

我还不是 DBA,但这似乎是 DBA 类型的问题,而不是编程问题。

有人问我:

  • 哪些查询调用最频繁?
  • 在正常项目中它们被调用多少次?
  • 他们需要多长时间来执行
  • 我们是否能够从 SQL 中提取执行计划来显示它当前的运行情况?
  • 我们的 SQL 中是否存在任何潜在错误(不可接受的脏读等)?
  • 哪些表最常被写入?
  • 最常读取哪些表?
  • 对于一个普通项目,这些表通常包含多少行?

由于需要在实时环境中运行,这变得很复杂。我们的愿望似乎是自动化一些维护过程,以修复我们发现的任何问题,并为开发提供输入以阻止他们做坏事。

我的第一个想法是——招聘一名 DBA,可能是一名顾问。

然后,所要求的规模之大令我震惊。一个项目可能会持续数月,其中一台 SQL Server 和多台应用程序服务器共享任务。此输出的数据量将是巨大的,监视每个正在执行的查询的性能开销也将是巨大的。

有没有推荐的此类分析工具?

monitoring sql-server query

1
推荐指数
1
解决办法
96
查看次数

如何从由记录标识符连接的 3 个表中检索数据?

我有3张桌子。

我需要使用特定WHERE条件检查这些表中是否存在特定标识符。我需要从所有 3 个表中获取数据。

我已经试过LEFT JOINRIGHT 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 表中的值。

join query

0
推荐指数
1
解决办法
478
查看次数

可能为 NULL 单元格的两列的差异

我需要按两列的差异对表格进行排序

SELECT (first - second) AS dif
    FROM table1
ORDER BY dif DESC
Run Code Online (Sandbox Code Playgroud)

但两列可以NULL。在这种情况下,它返回错误:

BIGINT UNSIGNED value is out of range
Run Code Online (Sandbox Code Playgroud)

这个错误的解决方案是使用IFNULL(col,0),但问题是,我需要difNULL,如果任一列是NULL

mysql null query order-by select

0
推荐指数
1
解决办法
669
查看次数

连接表而不会丢失数据

我处于需要查询数据库中的数据的情况,但正在努力解决如何正确形成查询的问题。基本上我需要从下表中获取数据:

Table: Contact
    contact_id INT [Primary Key]
    first_name VARCHAR(50)
    last_name  VARCHAR(50)

Table: Contact_Phone
    contact_id   INT [Foreign Key/Composite Primary Key]
    phone_number VARCHAR(15) [Composite Primary Key]
    extension    VARCHAR(10), NULL

Table: Contact_Fax
    contact_id   INT [Foreign Key/Composite Primary Key]
    fax_number   VARCHAR(15) [Composite Primary Key]

Table: Contact_Email
    contact_id   INT [Foreign Key/Composite Primary Key]
    email        VARCHAR(100) [Composite Primary Key]
Run Code Online (Sandbox Code Playgroud)

现在并不是我Contacts桌子上的每个联系人都有电话、传真或电子邮件。有些人只有一部电话或传真。其他人只是一封电子邮件。我知道有一个联系人只有一个电话号码。

现在我的问题是,如果我尝试对所有这些表进行简单的查询以查找特定的联系信息,如果其中任何一个都没有条目(例如,我的一个没有传真或电子邮件的联系人) 然后我根本没有返回任何数据。

所以问题是,我如何将这个查询放在一起,以便如果我试图查找特定联系人的信息,即使其中一个发生,我仍然能够看到所有数据(电话/传真/电子邮件)是空白?

join sql-server query

0
推荐指数
1
解决办法
2058
查看次数

我不使用 SQL Server 中的条件执行 SUM

我想根据各种条件对列进行 SUM 。在此示例中,对于列'fac_saldo_tot',如果值大于 500,则添加该列并将它们分组到列'cli_razon_soc'

我做了这个查询,但我不执行操作它只存储较高的值到 500 否则它把 0。 见图像(红色列)

    SELECT        cli_razon_soc, 
   CASE WHEN t .fac_saldo_tot > 500 THEN SUM(t .fac_saldo_tot) ELSE 0 END AS 'Mayor500'
FROM            cdc_vw_BuroCredito_Facturas95 AS t
GROUP BY cli_razon_soc, fac_saldo_tot
ORDER BY cli_razon_soc, 'Mayor500'
Run Code Online (Sandbox Code Playgroud)

我很感激你能给我的建议

在此处输入图片说明

这是我想要的结果

在此处输入图片说明

sql-server query

0
推荐指数
1
解决办法
51
查看次数

在单个结果中加入一对多字段,无需串联

我遇到了与在单个结果连接一对多字段相同的问题,但我需要一个结果,其中“许多”字段占据自己的列并且没有连接在一列中。有什么建议?

样本数据:

___ID      Mapped_Heading    Source_Value
1          English           pass
1          Math              pass
1          History           fail


___ID      Name              Age
1          Bob               12
2          Harry             12
3          Emily             14
Run Code Online (Sandbox Code Playgroud)

最终结果将是:

___ID      Name      Age  English   Math   History
1          Bob       12   pass      pass   fail
Run Code Online (Sandbox Code Playgroud)

我希望我也不会用PIVOTPARTITION BY,因为我不熟悉这些功能,但我一直撞到他们对于这个问题这么认为,我可能有什么打算?

sql-server query pivot

0
推荐指数
1
解决办法
87
查看次数

如何通过 SQL 查询识别 SQL Server 品牌

第三方 API 公开接受“SQL”查询的端点。他们的示例是简单的SELECT语句,但我想编写更复杂的查询。

他们没有指定他们使用的是哪个 SQL 品牌,这意味着我不知道应该遵循的确切语法。

如何使用一个或多个 SQL 查询(无命令行访问、文件权限等)识别 SQL 品牌(SQL Server、MySQL、Azure SQL、Postgres 等)?

query syntax database-theory relational-theory

0
推荐指数
1
解决办法
69
查看次数

MySQL 查询非常慢。索引问题?

我有一个这样的查询:

SELECT 
    BE.NAME as NAME,
    BE.PREVIEW_TEXT as PREVIEW_TEXT,
    BE.ID as ID, 
    FPV1.VALUE as PROPERTY_COUNTRY_VALUE, 
    FPV1.ID as PROPERTY_COUNTRY_VALUE_ID, 
    FPV2.VALUE as PROPERTY_TOUR_TYPE_VALUE, 
    FPV2.ID as PROPERTY_TOUR_TYPE_VALUE_ID, 
    FPV3.VALUE as PROPERTY_DAYS_VALUE, 
    FPV3.ID as PROPERTY_DAYS_VALUE_ID, 
    FPV4.VALUE as PROPERTY_PRICE_VALUE, 
    FPV4.ID as PROPERTY_PRICE_VALUE_ID, 
    FPV5.VALUE as PROPERTY_CURRENCY_VALUE, 
    FPV5.ID as PROPERTY_CURRENCY_VALUE_ID, 
    FPV6.VALUE as PROPERTY_DATE_FROM_VALUE, 
    FPV6.ID as PROPERTY_DATE_FROM_VALUE_ID, 
    FPV7.VALUE as PROPERTY_DATE_TO_VALUE, 
    FPV7.ID as PROPERTY_DATE_TO_VALUE_ID, 
    FPV8.VALUE as PROPERTY_FLIGHT_FROM_VALUE, 
    FPV8.ID as PROPERTY_FLIGHT_FROM_VALUE_ID, 
    FPV9.VALUE as PROPERTY_MT_ID_VALUE, 
    FPV9.ID as PROPERTY_MT_ID_VALUE_ID, 
    FPV10.VALUE as PROPERTY_PRICE_FILE_VALUE, 
    FPV10.ID as PROPERTY_PRICE_FILE_VALUE_ID,
    BE.PREVIEW_PICTURE as PREVIEW_PICTURE, 
    FPV11.VALUE as PROPERTY_PRICE_HAND_VALUE, 
    FPV11.ID as PROPERTY_PRICE_HAND_VALUE_ID, …
Run Code Online (Sandbox Code Playgroud)

mysql query

-1
推荐指数
1
解决办法
664
查看次数

查找不同用户并发登录的最大数量

我正在寻找提供月份和年份的查询,并显示所选月份的 4(或 5)周,并且每周应显示本周同时登录用户的最大数量。最大用户数应根据 SQL Server 表 usersession 计算。同时意味着同时登录,即它们具有重叠的登录日期时间/注销日期时间。。表和示例

因此,如果存在并发用户,则应给出不同用户的数量,如果该日期存在用户但不并发,则应返回 1,否则返回 0。

我知道这很难。

sql-server query aggregate

-1
推荐指数
1
解决办法
6090
查看次数

按日期、月份、年份查询数据库

如何按日期查询订单。

像这样:

在此处输入图片说明

周、月、年……都一样吗?

sql-server-2008 query

-2
推荐指数
1
解决办法
1855
查看次数

在 SQL Select 语句中使用计算列

我正在尝试编写查询。A 列来自数据库,B 列是 1 或 -1,它是查看同一个表的 CASE 语句的结果。现在,我的 C 列需要引用 B 列作为其计算的一部分(假设它是 Column_B * Column_X )。这是如何完成的,因为我无法在 SELECT 语句中使用 Column_B。

sql-server query

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