我有一个像这样生成的插入查询
INSERT INTO InvoiceDetail (LegacyId,InvoiceId,DetailTypeId,Fee,FeeTax,Investigatorid,SalespersonId,CreateDate,CreatedById,IsChargeBack,Expense,RepoAgentId,PayeeName,ExpensePaymentId,AdjustDetailId)
VALUES(1,1,2,1500.0000,0.0000,163,1002,'11/30/2001 12:00:00 AM',1116,0,550.0000,850,NULL,@ExpensePay1,NULL);
DECLARE @InvDetail1 INT; SET @InvDetail1 = (SELECT @@IDENTITY);
Run Code Online (Sandbox Code Playgroud)
仅为110K行生成此查询.
所有这些查询都需要30分钟才能执行
我检查了查询计划,最大的%节点是
群集索引以57%的查询成本插入,其中包含一个我不想发布的长xml.
表Spool,查询成本为38%
<RelOp AvgRowSize="35" EstimateCPU="5.01038E-05" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="1" LogicalOp="Eager Spool" NodeId="80" Parallel="false" PhysicalOp="Table Spool" EstimatedTotalSubtreeCost="0.0466109">
<OutputList>
<ColumnReference Database="[SkipPro]" Schema="[dbo]" Table="[InvoiceDetail]" Column="InvoiceId" />
<ColumnReference Database="[SkipPro]" Schema="[dbo]" Table="[InvoiceDetail]" Column="InvestigatorId" />
<ColumnReference Column="Expr1054" />
<ColumnReference Column="Expr1055" />
</OutputList>
<Spool PrimaryNodeId="3" />
</RelOp>
Run Code Online (Sandbox Code Playgroud)
所以我的问题是我能做些什么来提高这件事的速度?我已经运行了ALTER TABLE TABLENAME NOCHECK CONSTRAINTS ALL在查询之前然后在查询之后ALTER TABLE TABLENAME NOCHECK CONSTRAINTS ALL.
这并没有消除任何时间的任何东西.
知道我在使用SqlCommand对象发送查询的.NET应用程序中运行这些查询.
然后我尝试将sql命令输出到一个文件,然后使用sqlcmd执行它,但我没有得到任何关于它如何做的更新,所以我放弃了.
任何想法或提示或帮助?
更新:
好的,所以你们都非常乐于助人.在这种情况下,我希望我能够赞扬不止一个答案.
解决这个问题的解决方案是双重的.
首先:
1)我禁用/重新启用所有外键(比丢弃它们容易得多)
ALTER …Run Code Online (Sandbox Code Playgroud) 我无法弄清楚以下伪sql的正确语法:
INSERT INTO some_table
(column1,
column2)
SELECT col1_value,
col2_value
FROM other_table
WHERE ...
RETURNING id
INTO local_var;
Run Code Online (Sandbox Code Playgroud)
我想插入一些子查询的值.插入后我需要新生成的id.
以下是oracle doc所说的:
好吧,我认为只有价值条款才有可能......有替代方案吗?
如何save()在Doctrine中将多行插入表调用方法?
我正在尝试做的事情:阅读日志并将必要的数据插入到3个不同的表中,这些表可以互相获取信息.
LOG_ITEM201303在gamelogs db上找到.
Mail_Item_Table,Mail_List_Table,Mail_Message_Table是在游戏数据库中.
邮件表通过索引连接.
CHAR_KEY,NAME,ITEMNUM是我需要用我的查询值.
查询我从日志中获取数据:
SELECT CHAR_KEY, NAME, ITEMNUM
FROM LOG_ITEM201303
where
(
ITEMNUM = 14317
OR ITEMNUM = 14318
OR ITEMNUM = 15478
OR ITEMNUM = 15479
OR ITEMNUM = 14301
OR ITEMNUM = 14302
OR ITEMNUM = 15476
OR ITEMNUM = 15477
OR ITEMNUM = 15018
OR ITEMNUM = 15019
OR ITEMNUM = 15020
OR ITEMNUM = 15021
OR ITEMNUM = 15022
OR ITEMNUM = …Run Code Online (Sandbox Code Playgroud) 我正在创建一个浏览器HTML编辑器.我正在使用名为Code Mirror的语法高亮显示器,它非常好.
我的设置是一个iframe,它包含正在编辑的页面视图和用户编辑的纯文本HTML所在的文本区域.
我试图将编辑后的HTML从textarea插入到iframe中,显示它们呈现HTML.
这可能吗?我尝试过以下方法:
HTML设置:
<iframe id="render">
</iframe>
<textarea id="code">
HTML WILL BE
HERE
</textarea>
<input type="submit" id="edit_button" value="Edit" />
Run Code Online (Sandbox Code Playgroud)
JQuery设置:
$('#edit_button').click(function(){
var code = editor.getCode(); // editor.getCode() is a codemirror function which gets the HTML from the text area
var iframe = $('#render');
iframe.html(code)
})
Run Code Online (Sandbox Code Playgroud)
这似乎没有将HTML加载到iframe中,是否有一种将HTML插入iframe的特殊方法,或者这是不可能的?
干杯
EEF
我希望在已知位置插入c ++向量.我知道c ++库有一个insert()函数,它接受一个位置和要插入的对象,但位置类型是一个迭代器.我想插入到矢量中,就像我将使用特定索引插入到数组中一样.
是否可以插入行并在同一查询中插入值?
就像是...
INSERT INTO `items` (`item`, `number`, `state`)
(SELECT '3', `number`, `state` FROM `item_bug` WHERE `id`='3')
Run Code Online (Sandbox Code Playgroud)
然后,获取ID并执行
SELECT * FROM `items` WHERE `id`='$id'
Run Code Online (Sandbox Code Playgroud)
但只使用一个查询.
例:
create table foo(
id serial,
txt text
);
insert into foo(txt) values ('a'),('b'),('c') returning id;
Run Code Online (Sandbox Code Playgroud)
返回:
id
----
1
2
3
(3 rows)
Run Code Online (Sandbox Code Playgroud)
这似乎是在第一次 id的返回值永远是id对'a',第二对'b'等,但该定义的行为insert into,抑或是可以在奇数的情况下失败是巧合吗?
这样的查询可能吗?MySQL给了我一个语法错误.具有嵌套选择的多个插入值...
INSERT INTO pv_indices_fields (index_id, veld_id)
VALUES
('1', SELECT id FROM pv_fields WHERE col1='76' AND col2='val1'),
('1', SELECT id FROM pv_fields WHERE col1='76' AND col2='val2')
Run Code Online (Sandbox Code Playgroud) 我有一个MySQL数据库,group其中一个列名称中包含单词" ".我无法更改此数据库和列的名称; 不是我的.
表用户,列:id, name, password, group,和其他.我需要在此表中插入一条记录.我试过了INSERT INTO users (name, group) VALUES ('John', '9'),但因为" group" 而无法正常工作.
你能帮帮我吗,请问如何在这张表中插入记录?