哪个查询更快?
不存在:
SELECT ProductID, ProductName
FROM Northwind..Products p
WHERE NOT EXISTS (
SELECT 1
FROM Northwind..[Order Details] od
WHERE p.ProductId = od.ProductId)
Run Code Online (Sandbox Code Playgroud)
或者不是:
SELECT ProductID, ProductName
FROM Northwind..Products p
WHERE p.ProductID NOT IN (
SELECT ProductID
FROM Northwind..[Order Details])
Run Code Online (Sandbox Code Playgroud)
查询执行计划表明他们都做同样的事情.如果是这种情况,这是推荐的形式?
这基于NorthWind数据库.
[编辑]
刚刚找到这篇有用的文章:http: //weblogs.sqlteam.com/mladenp/archive/2007/05/18/60210.aspx
我想我会坚持使用NOT EXISTS.
我正在尝试java.awt.headless=true
在应用程序启动期间设置,但看起来我已经太晚了,非无头模式已经开始:
static {
System.setProperty("java.awt.headless", "true");
/* java.awt.GraphicsEnvironment.isHeadless() returns false */
}
Run Code Online (Sandbox Code Playgroud)
除此之外还有另一种无头的方式-Djava.awt.headless=true
吗?我不想在控制台上配置任何东西.
我必须将一个Class
对象与一个预定义的类列表进行比较.
使用安全==
还是应该使用equals
?
if (klass == KlassA.class) {
} else if (klass == KlassB.class) {
} else if (klass == KlassC.class) {
} else {
}
Run Code Online (Sandbox Code Playgroud)
注意:我不能使用instanceof
,我没有对象,我只是拥有该Class
对象.我(错误)在这种情况下使用它就像一个枚举!
我需要提取时间戳的"完整"小时.喜欢2010.03.04 13:13我想要2010.03.04 13:00(再次作为时间戳).
我目前的做法是:
TO_TIMESTAMP(TO_CHAR(m.begin, 'yyyy.mm.dd hh24'), 'yyyy.mm.dd hh24')
Run Code Online (Sandbox Code Playgroud)
这真的是要走的路吗?它表现出好/坏(我计划对其进行GROUP BY).
感谢您的输入!
干杯,雷托
由于它在多线程方面的良好声誉,我使用的是joda.通过使所有Date/Time/DateTime对象不可变,可以使多线程日期处理变得高效.
但在这种情况下,我不确定Joda是否真的做得对.它可能会,但我很有兴趣看到一个解释.
当调用DateTime的toString()时,Joda会执行以下操作:
/* org.joda.time.base.AbstractInstant */
public String toString() {
return ISODateTimeFormat.dateTime().print(this);
}
Run Code Online (Sandbox Code Playgroud)
所有格式化程序都是线程安全的(它们也是不可变的),但是有关formatter-factory的内容:
private static DateTimeFormatter dt;
/* org.joda.time.format.ISODateTimeFormat */
public static DateTimeFormatter dateTime() {
if (dt == null) {
dt = new DateTimeFormatterBuilder()
.append(date())
.append(tTime())
.toFormatter();
}
return dt;
}
Run Code Online (Sandbox Code Playgroud)
这是单线程应用程序中的常见模式,但已知它在多线程环境中容易出错.
我看到以下危险:
没有问题,因为这只是一个辅助对象(与正常的单例模式情况不同),一个被保存在dt中,另一个被丢失并且迟早会被垃圾收集.
(在叫我疯了之前,请阅读本维基百科文章中的类似情况.)
那么Joda如何确保在这个静态变量中没有发布部分创建的格式化程序?
谢谢你的解释!
雷托
作为应用程序之战的一部分,我们想发布一些帮助脚本(shell脚本).不幸的是,我们的构建系统(maven)似乎丢弃了所有文件的权限,并且脚本最终没有设置可执行位.
甚至可以这样做吗?.war格式是否支持可执行文件?如果是的话:怎么能告诉maven在这个过程中保留权限/修复它们?
上下文:Oracle 10数据库.
在一个相当大的表(几百万条记录)中,我们最近开始看到一些性能问题.该表有一些特殊的行为/条件.
现在,由于大多数访问是对类1进行的,因此该列通常与其他条件一起涉及查询(class = 1).我们在类列上有一个索引,然后在某些其他列上有索引.
对于我的问题:我们现在正在考虑按类对该表进行分区.据我所知,这将使索引/处理数据更快,因为class = 1已经与其余数据分开,因此对它的访问隐含更高效.它是否正确?
如果您同意这是一个好主意,我会进一步阅读该主题!
谢谢干杯
更新2010.11.30
非常感谢您的投入.我不知道它是一个额外的选项:)感谢指出(在我投入太多时间之前).但除了许可证问题之外,在我看来,分区在这种情况下不一定是一个好的解决方案.
要在MySQL中锁定两行,我应该使用:
SELECT * FROM <table> WHERE id=? OR id=? FOR UPDATE;
Run Code Online (Sandbox Code Playgroud)
要么:
SELECT * FROM <table> WHERE id=? AND id=? FOR UPDATE;
Run Code Online (Sandbox Code Playgroud)
我显然是在交易中,只是不确定它是否应该AND
或OR
?
我想使用makefile将一组svgs转换为pngs.以下代码段显示了我到目前为止所做的工作.
%.png: origs/%.svg
convert -resize "32x" $< $@
Run Code Online (Sandbox Code Playgroud)
make foo.png
现在有效.但我坚持所有目标.我想用一个命令转换所有东西(所有的svgs).
在所有的例子中,我发现所有目标都是这样的:
all: ${OBJECTS}
Run Code Online (Sandbox Code Playgroud)
但我确信我的案子有一个更简单的方法,请帮助我找到它!:d
我只是想到能够应用javascript代码就像你可以应用css一样非常好.
想象一下:
/* app.jss */
div.closeable : click {
this.remove();
}
table.highlightable td : hover {
previewPane.showDetailsFor(this);
}
form.protectform : submit { }
links.facebox : click {}
form.remote : submit {
postItUsingAjax()... }
Run Code Online (Sandbox Code Playgroud)
我相信有更好的例子.
你可以在dom上做类似的东西:loadad - > $$(foo.bar).onClick(但这只适用于dom:loadad中存在的元素)......等等.但是拥有一个jss文件真的很酷.
嗯,这必须是一个问题,而不是一个问题...所以我的问题是:有类似的东西吗?
Appendum
我知道Jquery和prototype允许用$$做类似的事情和方便的帮助来捕获事件.但我有时不喜欢这个变体是处理程序只安装到网站首次加载时已存在的元素上.
我正在寻找一种很好的方法来标记/选择两个选定元素之间的所有元素.
想像
<parent>
<p>...</p>
<p>...</p>
<p>...</p>
<p>...</p>
</parent>
Run Code Online (Sandbox Code Playgroud)
父级上有一个点击处理程序.用户现在可以在此列表中选择两个p元素,然后中间的所有p元素都应该被"激活".
我正在考虑一个类似的系统:
我不知道如何做3,期待蛮力方法(在两个方向迭代,看看它是否存在)
关于我的情况:父母可能包含几千个p.
感谢您的帮助/想法!
雷托
我从数据库中取出并根据位置对其进行了分类.然后我把必要的数据放入哈希.将数据放入哈希后,我打印了哈希.但结果是相反的顺序.所以我想要反转哈希.我怎样才能做到这一点?