我们使用SQL Server 2005来跟踪相当数量的不断传入的数据(每秒5-15次更新).我们注意到它已经生产了几个月后,其中一个表开始花费大量的时间来查询.
该表有3列:
id
- 自动编号(群集)typeUUID
- 插入发生之前生成的GUID; 用于将类型组合在一起typeName
- 类型名称(duh ......)我们运行的查询之一是该typeName
领域的一个独特的:
SELECT DISTINCT [typeName] FROM [types] WITH (nolock);
Run Code Online (Sandbox Code Playgroud)
该typeName
字段上有一个非clusted,非唯一的升序索引.该表目前包含大约200M条记录.当我们运行此查询时,查询需要5米58秒才能返回!或许我们不理解的指标是如何工作的.但我不认为我们错误地理解它们是多少.
为了进一步测试,我们运行了以下查询:
SELECT DISTINCT [typeName] FROM (SELECT TOP 1000000 [typeName] FROM [types] WITH (nolock)) AS [subtbl]
Run Code Online (Sandbox Code Playgroud)
这个查询在大约10秒内返回,正如我所料,它正在扫描表格.
我们在这里缺少什么?为什么第一个查询需要这么长时间?
编辑:啊,我的道歉,第一个查询返回76条记录,谢谢你ninesided.
跟进:谢谢大家的回答,现在对我来说更有意义(我不知道为什么之前没有......).没有索引,它正在对200M行进行表扫描,带有索引,它正在对200M行进行索引扫描......
SQL Server确实更喜欢索引,它确实提供了一点性能提升,但没什么好兴奋的.重建索引确实将查询时间缩短到超过3米而不是6米,这是一项改进,但还不够.我只是向老板推荐我们规范表格结构.
再一次,谢谢大家的帮助!!
在开始之前,我想澄清一下,这不是一个命令行工具,而是一个通过它自己的命令行界面接受命令的应用程序.
编辑:我必须为我之前的解释道歉,显然我没有做好解释它的工作.再一次...
我正在构建一个接受用户命令的命令行界面应用程序.我有一个信号处理程序设置来捕获信号,然后设置我需要终止应用程序的标志.我遇到的问题是我能找到的所有控制台功能都是阻塞的,这意味着我无法检测到我需要退出控制台处理循环,直到用户按下某个键(或输入,具体取决于函数) ).
是否有一些标准的方法我可以做非块控制台交互,或者是否有一种优雅的方式来构造程序,这样如果我只是从信号线程终止,那么一切都将被正确处理和释放(请不要错误 - 理解这一点,我知道如何使用锁定和释放信令线程中的资源来实现这一点,但这可能会变得混乱,所以我宁愿避免它)
希望这个解释更有意义......
我正在尝试使用PyCXX创建一个简单的 Python 扩展。我正在针对我的 Python 2.5 安装进行编译。
我的目标是能够在 Python 中执行以下操作:
import Cats
kitty = Cats.Kitty()
if type(kitty) == Cats.Kitty:
kitty.Speak()
Run Code Online (Sandbox Code Playgroud)
但每次我尝试时,都会出现以下错误:
TypeError: cannot create 'Kitty' instances
它确实被视为Cats.Kitty
类型对象,但我无法创建 Kitty 类的实例,有什么想法吗?
这是我当前的来源:
#include "CXX/Objects.hxx"
#include "CXX/Extensions.hxx"
#include <iostream>
using namespace Py;
using namespace std;
class Kitty : public Py::PythonExtension<Kitty>
{
public:
Kitty()
{
}
virtual ~Kitty()
{
}
static void init_type(void)
{
behaviors().name("Kitty");
behaviors().supportGetattr();
add_varargs_method("Speak", &Kitty::Speak);
}
virtual Py::Object getattr( const char *name )
{
return getattr_methods( name );
} …
Run Code Online (Sandbox Code Playgroud) 我需要在iPhone应用程序中显示文本,例如书籍的显示方式,例如:
我该怎么做呢?我找到了UITextView和UITextField以及UIScrollView对象,但我无法弄清楚如何正确使用它们......有什么建议吗?
我希望这是有道理的...
我正在使用 C++ 和 Obj-C 编写一个与 Photoshop 交互的 OSX 应用程序。
我一直在使用NSAppleScript
动态构建的 AppleScripts 来驱动 Photoshop(是的,这有点可怕......)我希望能够以不同的方式驱动 Photoshop,所以如果有人知道更好的方法,我愿意接受!不幸的是,我无法使用ScriptingBridge
,因为我无法将我的用户绑定到 Leopard。
就在前几天晚上,当我从 Photoshop 查询操作列表以向用户显示时,出现了大问题。显然,Photoshop 的脚本集成不会向 AppleScript 公开动作列表 API。这是我不能使用的第二个原因ScriptingBridge
。
有谁知道如何在 Obj-C/C++ 程序中访问 Photoshop 的动作列表?额外问题:有谁知道我可以与 Photoshop 交互的更好方法吗?!
我正在使用C++中Common Controls 6.0的ListView控件,我需要ListView才能单选.
所有更高级别的控件都具有此功能(例如.Net和Qt),但我认为它们是基于此控制的某个地方.关于如何使其成为单选列表的任何想法?
为了防止它产生影响,这是我当前的create语句:
list = ::CreateWindowExW(
0,
WC_LISTVIEWW,
NULL,
WS_VISIBLE | WS_CHILD | WS_BORDER | LVS_SHOWSELALWAYS | LVS_REPORT | LVS_OWNERDATA,
0,
0,
250,
400,
parentWindow,
NULL,
NULL,
NULL
);
Run Code Online (Sandbox Code Playgroud) c++ ×3
applescript ×1
cocoa-touch ×1
iphone ×1
listview ×1
objective-c ×1
photoshop ×1
pycxx ×1
python ×1
signals ×1
sql ×1
sql-server ×1
winapi ×1