在这个优秀的SO问题中,讨论了CTE
和之间的sub-queries
差异.
我想具体问一下:
在什么情况下,以下各项更有效/更快?
传统上,我temp tables
在开发中使用了很多stored procedures
- 因为它们看起来比许多交织在一起的子查询更具可读性.
Non-recursive CTE
s非常好地封装数据集,并且非常易读,但是在某些情况下可以说它们总能表现得更好吗?或者是否必须总是摆弄不同的选项才能找到最有效的解决方案?
编辑
我最近被告知,就效率而言,临时表是一个很好的首选,因为它们具有相关的直方图即统计数据.
我使用以下内容在我的存储过程中搜索字符串:
use DBname
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%xxx%'
Run Code Online (Sandbox Code Playgroud)
是否可以轻松修改上述内容,以便在特定的数据库"DBname"中搜索表名?
我正在尝试编写以下内容,以便获得不同的NumUsers,如下所示:
NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth])
Run Code Online (Sandbox Code Playgroud)
管理工作室对此并不感到高兴.当我删除DISTINCT
关键字时,错误消失,但它不会是一个独特的计数.
DISTINCT
在分区函数中似乎不可能.我如何寻找独特的计数?我是否使用更传统的方法,例如相关子查询?
进一步研究一下,也许这些OVER
函数与Oracle的工作方式不同,它们不能用于SQL-Server
计算运行总计.
我在SQLfiddle上添加了一个实例,我尝试使用分区函数来计算运行总计.
刚尝试通过以下方式运行应用程序:
我浏览了一个带有应用程序的目录WindowsService1.exe
,然后尝试了命令,Installutil WindowsService1.exe
但得到了以下错误...
由于VS只安装了一两天,我担心安装会出现问题,因为它应该识别installutil.
我是否可以执行一些基本诊断以确保VS命令提示符找到它应该的所有程序?
编辑
如果我PATH
在命令提示符下运行,我会看到以下内容:
如何设置vbscript的延迟?
WScript.Sleep(100)
在Windows XP,Vista上不起作用.
我可以确定以下脚本的结果集将始终按此ORDER进行排序吗?
SELECT 'O'
UNION ALL
SELECT 'R'
UNION ALL
SELECT 'D'
UNION ALL
SELECT 'E'
UNION ALL
SELECT 'R'
Run Code Online (Sandbox Code Playgroud)
可以证明有时候会有不同的顺序吗?
我知道如何在NERDTree中创建重命名,删除和移动文件(只需按下m then either [a, d, or m]
).但我无法弄清楚如何创建一个文件夹.
有人知道如何在NERDTree上做这个(或者只是用vim的本地"方式")?
winforms文本框是否有任何属性可以在框的末尾创建一个嵌入式按钮?
类似Chrome地址框中的收藏夹按钮:
我在一些Excel表单中也看到过如下内容:
编辑
我跟随Hans Passant的回答添加了一个click事件处理程序,它似乎工作正常:
protected override void OnLoad(EventArgs e) {
var btn = new Button();
btn.Size = new Size(25, textBoxFolder.ClientSize.Height + 2);
btn.Location = new Point(textBoxFolder.ClientSize.Width - btn.Width, -1);
btn.Cursor = Cursors.Default;
btn.Image = Properties.Resources.arrow_diagright;
btn.Click += btn_Click;
textBoxFolder.Controls.Add(btn);
// Send EM_SETMARGINS to prevent text from disappearing underneath the button
SendMessage(textBoxFolder.Handle, 0xd3, (IntPtr)2, (IntPtr)(btn.Width << 16));
base.OnLoad(e);
}
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
private void btn_Click(object sender, EventArgs e) { …
Run Code Online (Sandbox Code Playgroud) 现在,如果您阅读MSDN for C#中的命名约定,您会注意到它声明属性始终优先于public和protected字段.有些人甚至告诉我,你永远不应该使用公共或受保护的领域.现在我同意我还没有找到一个理由,我需要有一个公共领域,但受保护的领域真的那么糟糕?
我可以看到它,如果您需要确保在获取/设置值时执行某些验证检查,但是在我看来,很多时候它似乎只是额外的开销.我的意思是说我有一个类GameItem,其中包含baseName,prefixName和suffixName的字段.我为什么要承担创建属性(C#
)或访问器方法的开销以及我将要发生的性能损失(如果我对应用程序中的每个字段执行此操作,我相信它会稍微增加一点,尤其是某些语言PHP
或某些具有性能的应用程序是否像游戏一样至关重要?
这是我的代码:
USE [xxx]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[problemParam]
@StartDate INT = CONVERT(INT,(CONVERT(CHAR(8),GETDATE()-130,112))),
@EndDate INT = NULL
AS
BEGIN
Run Code Online (Sandbox Code Playgroud)
SSMS
对我使用的默认值不太满意- 在MSDN DEFINITION HERE中它表示默认值需要是常量而不是变量.
是CONVERT(INT,(CONVERT(CHAR(8),GETDATE()-130,112)))
一个变量或常量?它不是传统方式中的一个变量,我认为它是一个变量,但它又不是一个常数'03 jan 2013'
.
我该如何解决这个问题?移动CONVERT(INT,(CONVERT(CHAR(8),GETDATE()-130,112)))
到调用存储过程的客户端?
编辑
可能重复,因为我刚发现这个SO POST
sql ×5
sql-server ×4
c# ×3
t-sql ×2
.net ×1
cmd ×1
coding-style ×1
directory ×1
performance ×1
subquery ×1
vbscript ×1
vim ×1
winforms ×1