我正在研究PostgreSQL 8.1 SQL脚本,它需要从表中删除大量行.
假设我需要删除的表是Employees(~260K行).它的主键名为id.
我需要从此表中删除的行存储在一个名为EmployeesToDelete(~10K记录)的单独临时表中,其中包含一个名为employee_id的Employees.id的外键引用.
有没有一种有效的方法来做到这一点?
起初,我想到了以下几点:
DELETE
FROM Employees
WHERE id IN
(
SELECT employee_id
FROM EmployeesToDelete
)
Run Code Online (Sandbox Code Playgroud)
但我听说使用"IN"子句和子查询可能效率低下,尤其是对于较大的表.
我查看了PostgreSQL 8.1文档,并提到了DELETE FROM ... USING但它没有示例,所以我不知道如何使用它.
我想知道以下是否有效并且效率更高?
DELETE
FROM Employees
USING Employees e
INNER JOIN
EmployeesToDelete ed
ON e.id = ed.employee_id
Run Code Online (Sandbox Code Playgroud)
非常感谢您的意见.
编辑:我运行了EXPLAIN ANALYZE,奇怪的是第一个DELETE跑得很快(几秒钟内),而第二个DELETE花了这么长时间(超过20分钟)我最终取消了它.
向临时表添加索引有助于提高性能.
这是对任何感兴趣的人的第一个DELETE的查询计划:
Hash Join (cost=184.64..7854.69 rows=256482 width=6) (actual time=54.089..660.788 rows=27295 loops=1)
Hash Cond: ("outer".id = "inner".employee_id)
-> Seq Scan on Employees (cost=0.00..3822.82 rows=256482 width=10) (actual time=15.218..351.978 rows=256482 loops=1)
-> Hash (cost=184.14..184.14 rows=200 width=4) (actual time=38.807..38.807 rows=10731 loops=1) …Run Code Online (Sandbox Code Playgroud) 两个问题:
在用户单击提交时回发时,如何向验证摘要添加错误消息?
是否也可以使用内置的.net验证控件突出显示特定的文本框?
基于以下XML,在XSL中实现字母数字排序的最佳方法是什么?
编辑:为了澄清,下面的XML只是一个简单的示例,真正的XML将包含更多的变量值.
<colors>
<item>
<label>Yellow 100</label>
</item>
<item>
<label>Blue 12</label>
</item>
<item>
<label>Orange 3</label>
</item>
<item>
<label>Yellow 10</label>
</item>
<item>
<label>Orange 26</label>
</item>
<item>
<label>Blue 117</label>
</item>
</colors>
Run Code Online (Sandbox Code Playgroud)
我想按此顺序获得最终结果:
Blue 12, Blue 117, Orange 3, Orange 26, Yellow 10, Yellow 100
Run Code Online (Sandbox Code Playgroud)
这是" 有效 "我想要的.
<xsl:apply-templates select="colors/item">
<xsl:sort select="label" data-type="text" order="ascending"/><!--1st sort-->
<xsl:sort select="label" data-type="number" order="ascending"/><!--2nd sort-->
</xsl:apply-templates>
<xsl:template match="item">
<xsl:value-of select="label"/>
<xsl:if test="position() != last()">,</xsl:if>
</xsl:template>
Run Code Online (Sandbox Code Playgroud) 搜索将提供对象模型,解析,验证等的库或框架
我们的想法是能够启动hl7 v2或v3类型的新对象.然后可能将其称为消息类型ORU_R01或ADT,或ORM.
如果我们能够做到这样的事情,生活会不会很好:
HL7V2 myMessage = new HL7V2();
myMessage.Type = V2MsgTypes.ORU_R01;
myMessage.TryParse(someHL7_string);
if (myMessage.IsValid)
{
//do some work
//maybe access the PID segment
if (myMessage.Patient.Names.FamilyName =="Johnson")
{
//do more work
}
}
Run Code Online (Sandbox Code Playgroud) 我知道ASP.NET会自动执行此操作,但出于某种原因,我似乎无法找到该方法.
帮助任何人?正如标题所说.
如果我执行Response.Redirect("〜/ Default.aspx"),它可以工作,但我不想重定向该站点.我只想要完整的URL.
谁能帮我吗?
我正在寻找一个示例Spring MVC 2.5 Web应用程序,我可以轻松地:
Spring发行版中包含了几个示例应用程序('petclinic'和'jpetstore'),但它们不提供任何Eclipse项目文件(或生成它们的方法).它们对我的需求似乎有点复杂,例如需要设置本地数据库.
有没有人设法说服ImageIO写一个动画GIF,特别是设置正确的元数据?我的第一次尝试大致如下(其中b1和b2是BufferedImages):
ImageTypeSpecifier spec = new ImageTypeSpecifier(b1);
ImageWriter wr = ImageIO.getImageWriters(spec, "GIF").next();
wr.setOutput(ImageIO.createImageOutputStream(new File("C:\\Flashing.gif")));
ImageWriteParam param = wr.getDefaultWriteParam();
IIOMetadata meta = wr.getDefaultImageMetadata(spec, param);
wr.prepareWriteSequence(meta);
wr.writeToSequence(new IIOImage(b1, null, null), param);
wr.writeToSequence(new IIOImage(b2, null, null), param);
Run Code Online (Sandbox Code Playgroud)
这似乎几乎可行,但是:
如果有人从ImageIO编写动画GIF,可以分享工作代码片段或如何解决上述问题,我们将不胜感激!
我在git中跟踪虚拟PC虚拟机文件(*.vmc),在进行更改后,git将该文件识别为二进制文件并且不会为我进行区分.我发现该文件是用UTF-16编码的.
可以教git识别这个文件是文本并适当处理它吗?
我在Cygwin下使用git,core.autocrlf设置为false.如果需要,我可以在UNIX下使用mSysGit或git.
有没有一种方法可以用来在c#中生成非线性渐变画笔?
澄清:我不是在寻找可以应用于非线性路径的渐变.相反,我正在寻找两种颜色之间的渐变,这两种颜色之间以非线性方式逐渐消失,即在渐变开始时变化的速度更快,而在画笔接近结束点时变慢.
使用gdi +在c#中是否可以实现这一点?
我有一个需要在管理权限下运行的进程.我需要普通的jo来运行这个过程,但是我不想让所有人都访问...所以我创建了一个简单的类,它将以管理员身份运行这个ONE任务,使用模拟.
代码是非常严格的前进,但我无法理解为什么这会崩溃.救命??!!
我通过批处理文件运行它,我甚至将需要执行的文件复制到本地硬盘驱动器,认为这可能是通过网络运行应用程序的权限问题.
public static Process ImpersonateProcess(string exe, string args, string Username, string Password)
{
ProcessStartInfo psi = new ProcessStartInfo(exe);
psi.Arguments = args;
psi.UseShellExecute = false;
psi.UserName = Username;
psi.Password = new SecureString();
foreach (char c in Password.ToCharArray())
{
psi.Password.AppendChar(c);
}
Process proc = null;
Console.WriteLine("starting...");
proc = Process.Start(psi);
Console.WriteLine("started");
return proc;
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我永远不会"开始".它在Process.Start(psi)中抛出一个错误,并显示"目录名无效"的错误消息.
c# ×4
java ×2
.net ×1
alphanumeric ×1
animated-gif ×1
asp.net ×1
database ×1
diff ×1
gdi+ ×1
git ×1
hl7 ×1
methods ×1
object-model ×1
postgresql ×1
sample ×1
sorting ×1
spring ×1
spring-mvc ×1
sql ×1
unicode ×1
utf-16 ×1
validation ×1
winforms ×1
xslt ×1