我正在修改创建查询以查找缺少的索引.我已经在他们的SQL Server DMV Starter Pack电子书中采用了Red-Gate人员创建的基本查询,并对其进行了一些修改.有几列sys.dm_db_missing_index_group_stats我不知道如何解释.他们是:
avg_total_user_cost
avg_user_impact
Run Code Online (Sandbox Code Playgroud)
根据文档,我发现avg_total_user_cost定义为表示每次执行用户查询时的平均总用户成本.并且,avg_user_impact 将值表示为百分比.它显示了创建索引时可以获得的改进量.
我的查询说应该添加的索引显示2.22平均用户成本和99.82用户影响.这些数字到底意味着什么?这是否意味着添加索引,我可以将关联查询的速度提高99.82%.我不知道2.22可能意味着什么.
谢谢.
我手边没有"解释计划".你能帮忙说出以下哪项更有效率吗?
选项1:
select ...
from VIEW_ABC
where STRING_COL = 'AA'
OR STRING_COL = 'BB'
OR STRING_COL = 'BB'
OR ...
OR STRING_COL = 'ZZ'
Run Code Online (Sandbox Code Playgroud)
选项2:
select ...
from VIEW_ABC
where STRING_COL IN ('AA','BB',...,'ZZ')
Run Code Online (Sandbox Code Playgroud) 我有个问题。我正在使用游标。每次获取最后的记录并打印其数据后,光标都会打印一条附加行。要理解我的意思,请考虑以下示例示例:我只想打印有关10个客户的信息。
USE Northwind
GO
DECLARE myCursor CURSOR
FOR SELECT TOP(10) ContactName FROM Customers
DECLARE @RowNo int,@ContactName nvarchar(30)
SET @RowNo=1
OPEN myCursor
FETCH NEXT FROM myCursor INTO @ContactName
PRINT LEFT(CAST(@rowNo as varchar) + ' ',6)+' '+ @ContactName
SET @RowNo=@RowNo+1
SET @ContactName=''
WHILE @@FETCH_STATUS=0
BEGIN
FETCH NEXT FROM myCursor INTO @ContactName
PRINT + LEFT(CAST(@rowNo as varchar) + ' ',6)+' '+ @ContactName
SET @RowNo=@RowNo+1
SET @ContactName=''
END
CLOSE myCursor
DEALLOCATE myCursor
Run Code Online (Sandbox Code Playgroud)
现在看一下输出:
1 Maria Anders
2 Ana Trujillo
3 Antonio Moreno
4 Thomas …Run Code Online (Sandbox Code Playgroud) 在SQL Server 2008中,我们可以使用Union/Unino All将两个结果放在一起,但我想为最终结果添加order by.怎么办?
我想要的是:
select id1 as id, * from ...
Union All
select id2 as id, * from ...
order by id
Run Code Online (Sandbox Code Playgroud)
请帮忙.谢谢.
我正在为我的食谱设计一个数据库。我在我的设计中创建了多个表格:书籍、作者、食谱、成分,对于所有这些项目,我想将媒体(图像或视频)链接到所有这些表格中的项目。
我在想这样的设计:
media_id,
rid (primary key of foreign table),
rtype (1=book, 2=author, 3=recipe, 4=ingredient),
media_type(1=image,2=video),
media_url
Run Code Online (Sandbox Code Playgroud)
但是我将如何确保关系完整性?
谢谢
我有一个SQL Server 2005数据库,有两个表:Order,LineItem.每个LineItem都有一个名为LineItemID和OrderID的字段.我有一个查询,它获取了我的数据库中的所有订单记录.对于每个Order记录,我想检索与Order关联的LineItemID的逗号分隔列表.
有没有办法在SQL中执行此操作?我不知道该怎么做.
谢谢!
关于事务复制如何处理以下内容,我有以下问题.为了举例,假设数据库'A'正在被复制(通过事务复制)到数据库'B'.
每当我创建3个表的视图时,它都会复制所有行上的所有数据.我不知道如何连接这些,以便它显示空值而不是重复.你能直接指出我吗?
这是场景:
数据看起来像这样:
[Table 1= Accounts]
id name accountid
1 Family A account001
2 Family B account002
3 Family C account003
[Table 2= Properties]
id accountid description address
1 account001 home california
2 account001 beach mexico
3 account002 hideout arizona
4 account002 getaway nevada
5 account002 skilodge idaho
6 account 003 home texas
[Table 3= Vehicles]
id description make model accountid
1 green Acura Integra account001
2 blue Aston Martin Vantage account001
3 silver …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我有一组可以在列出资源时应用的过滤器,这些过滤器在执行查询之前通过添加WHERE子句等来构建查询.这是使用SQL Server 2008.
我有两个相关的表,一个包含有关资源的一些静态数据,另一个可以包含与该资源有关的任意/可选字段.
第一个表是这样的(表名和字段已更改):
CREATE TABLE Resources (
ResID varbinary(28),
... extra stuff omitted
type integer );
Run Code Online (Sandbox Code Playgroud)
第二个表只有名称/值对和相应的资源ID
CREATE TABLE ResourceFields (
ResID varbinary(28) NOT NULL,
Name nvarchar(255) NOT NULL,
Value nvarchar(1024) NOT NULL);
Run Code Online (Sandbox Code Playgroud)
因此,对于此示例,"ResourceFields"中可能有多行,其中name ='ContactName'表示相同的ResID.
我想要做的是获取'Resources'表中有多个'ContactName'列在'ResourceFields'中且'type'等于某个值的行数.
我想出了这个(不要笑 - 我知道足够的SQL导致问题)
SELECT count(r.ResID)
FROM Resources as r
INNER JOIN ResourceFields AS rf
ON rf.ResID = r.ResID
AND rf.name = 'ContactName'
WHERE r.type = 1
GROUP BY rf.ResID
HAVING COUNT(rf.Value) > 1;
Run Code Online (Sandbox Code Playgroud)
但是不是在'Resources'中返回行数(我的测试集中的43)的计数,而是返回所有返回的COUNT(rf.Value)值(即43个单独的计数).
我究竟做错了什么?
我有一个excel电子表格,它从SQL中提取记录.我想结合重复记录并总结匹配记录的数量字段.我尝试将select(sum)和group by命令添加到我现有的查询中,但由于没有真正的SQL经验,因此我没有达到目标.我的表看起来像这样:
item no.| item description | qty | date
1 red onion 5 20110405
2 yellow onion 5 20110406
1 red onion 10 20110405
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样:
item no.| item description | qty | date
1 red onion 15 20110405
2 yellow onion 5 20110406
Run Code Online (Sandbox Code Playgroud)
这是我使用的查询:
SELECT
OELINHST_SQL.item_no, OELINHST_SQL.item_desc_1, OELINHST_SQL.qty_ordered, oelinhst_sql.unit_weight, OEHDRHST_SQL.shipping_dt, OEHDRHST_SQL.inv_dt
FROM
OEHDRHST_SQL OEHDRHST_SQL,
OELINHST_SQL OELINHST_SQL
WHERE
OEHDRHST_SQL.ord_type *= OELINHST_SQL.ord_type AND
OEHDRHST_SQL.ord_no *= OELINHST_SQL.ord_no AND
(OELINHST_SQL.prod_cat <> '26' AND
OELINHST_SQL.prod_cat <> '25') AND
OELINHST_SQL.loc = 'fs2' AND
OELINHST_SQL.item_desc_1 IS …Run Code Online (Sandbox Code Playgroud) sql-server ×7
sql ×5
csv ×1
cursors ×1
duplicates ×1
group-by ×1
integrity ×1
join ×1
oracle ×1
performance ×1
relational ×1
replication ×1
view ×1