1

我在这里使用查询,

"delete from Table where id in" ({0})", string.Join(",", Key.ToArray())

还有其他加快此过程的最佳方法吗?

注意:我使用了索引。

例子 :

我使用 SQL 分析器来跟踪它,查询是:

从[表]删除其中(27267,27268,27269,27270,27271,27271,27272,27273,27273,27274,27274,27275,27276,27276,27277,27277,27278,27278,27279,27280,27280 , 27288 , 27289 , 27290 , 27291 , 27292 , 27293 , 27294 , 27295 , 27296 , 27297 , 27298 , 27299 , 27300 , 27301 , 27302 , 27303 , 27304 , 27305 , 27306 , 27307 , 27308 , 27309 , 27310 , 27311 , 27312 , 27313 , 27314 , 27315 , 27316 , 27317 , 27318 , 27319 , 27320 , 27321 , 27322 , 27323 , 27324 , 27325 , 27326 , 27327 , 27328 , 27329 , 27330 , 27331 , 27332 , 27333 , 27334 , 27335 , 27336 , 27337 , 27338 , 27339 , 27340 , 27341 , 27342 , 27343 , 27344 , 27345 , 27346 , 27347 , 27348 , 27349 , 27350 , 27351 , 27352 , 27353 , 27354 , 27355 , 27356 , 27357 , 27358 , 27359 , 27360 , 27361 , 27362 , 27363 , 27364 , 27365 ,27366 , 27367 , 27368 , 27369 , 27370 , 27371 , 27372 , 27373 , 27374 , 27375 , 27376 , 27377 , 27378 , 27379 , 27380 , 27381 , 27382 , 27383 , 27384 , 27385 , 27386 , 27387 , 27388 , 27389 , 27390 , 27391,27392,27393,27394,27395,27396,27397,27397,27398,27399,27399,27400,27401,27402,27402,27403,27404,27404,27405,27405,27406,27407 27416 , 27417 , 27418 , 27419 , 27420 , 27421 , 27422 , 27423 , 27424 , 27425 , 27426 , 27427 , 27428 , 27429 , 27430 , 27431 , 27432 , 27433 , 27434 , 27435 , 27436 , 27437 , 27438 , 27439 , 27440 , 27441 , 27442 , 27443 , 27444 , 27445 , 27446 , 27447 , 27448 , 27449 , 27450 , 27451 , 27452 , 27453 , 27454 , 27455 , 27456 , 27457 , 27458 , 27459 , 27460 , 27461 , 27462 , 27463 , 27464 , 27465 , 27466 , 27467 , 27468 ,27469,27470,27471,27472,27473,27474,27475,27475,27476,27477,27477,27478,27479,27480,27480,27481,27482,27482,27483,27483,27484,27485 27494 , 27495 , 27496 , 27497 , 27498 , 27499 , 27500 , 27501 , 27502 , 27503 , 27504 , 27505 , 27506 , 27507 , 27508 , 27509 , 27510 , 27511 , 27512 , 27513 , 27514 , 27515 , 27516 , 27517 , 27518 , 27519 , 27520 , 27521 , 27522 , 27523 , 27524 , 27525 , 27526 , 27527 , 27528 , 27529 , 27530 , 27531 , 27532 , 27533 , 27534 , 27535 , 27536 , 27537 , 27538 , 27539 , 27540 , 27541 , 27542 , 27543 , 27544 , 27545 , 27546 , 27547 , 27548 , 27549 , 27550 , 27551 , 27552 , 27553 , 27554 , 27555 , 27556 , 27557 , 27558 , 27559 , 27560 , 27561 , 27562 , 27563 , 27564 , 27565 , 27566 , 27567 , 27568 , 27569 , 27570 , 27571 ,27572 , 27573 , 27574 , 27575 , 27576 , 27577 , 27578 , 27579 , 27580 , 27581 , 27582 , 27583 , 27584 , 27585 , 27586 , 27587 , 27588 , 27589 , 27590 , 27591 , 27592 , 27593 , 27594 , 27595 , 27596 , 27597 , 27598 , 27599 , 27600 , 27601 , 27602 , 27603 , 27604 , 27605 , 27606 , 27607 , 27608 , 27609 , 27610 , 27611 , 27612 , 27613 , 27614 , 27615 , 27616 , 27617 , 27618 , 27619 , 27620 , 27621 , 27622 , 27623 , 27624 , 27625 , 27626 , 27627 , 27628 , 27629 , 27630 , 27631 , 27632 , 27633 , 27634 , 27635 , 27636 , 27637 , 27638 , 27639 , 27640 , 27641 , 27642 , 27643 , 27644 , 27645 , 27646 , 27647 , 27648 , 27649 , 27650 , 27651 , 27652 , 27653 , 27654 , 27655 , 27656 , 27657 , 27658 , 27659 , 27660 , 27661 , 27662 , 27663 , 27664 , 27665 , 27666 , 27667 , 27668 , 27669 , 27670 , 27671 , 27672 , 27673 , 27674 , 27675 ,27676 , 27677 , 27678 , 27679 , 27680 , 27681 , 27682 , 27683 , 27684 , 27685 , 27686 , 27687 , 27688 , 27689 , 27690 , 27691 , 27692 , 27693 , 27694 , 27695 , 27696 , 27697 , 27698 , 27699 , 27700 , 27701 , 27702 , 27703 , 27704 , 27705 , 27706 , 27707 , 27708 , 27709 , 27710 , 27711 , 27712 , 27713 , 27714 , 27715 , 27716 , 27717 , 27718 , 27719 , 27720 , 27721 , 27722 , 27723 , 27724 , 27725 , 27726 , 27727 , 27728 , 27729 , 27730 , 27731 , 27732 , 27733 , 27734 , 27735 , 27736 , 27737 , 27738 , 27739 , 27740 , 27741 , 27742 , 27743 , 27744 , 27745 , 27746 , 27747 , 27748 , 27749 , 27750 , 27751 , 27752 , 27753 , 27754 , 27755 , 27756 , 27757 , 27758 , 27759 , 27760 , 27761 , 27762 , 27763 , 27764 , 27765 , 2776)27689 , 27690 , 27691 , 27692 , 27693 , 27694 , 27695 , 27696 , 27697 , 27698 , 27699 , 27700 , 27701 , 27702 , 27703 , 27704 , 27705 , 27706 , 27707 , 27708 , 27709 , 27710 , 27711 , 27712 , 27713 , 27714 , 27715 , 27716 , 27717 , 27718 , 27719 , 27720 , 27721 , 27722 , 27723 , 27724 , 27725 , 27726 , 27727 , 27728 , 27729 , 27730 , 27731 , 27732 , 27733 , 27734 , 27735 , 27736 , 27737 , 27738 , 27739 , 27740 , 27741 , 27742 , 27743 , 27744 , 27745 , 27746 , 27747 , 27748 , 27749 , 27750 , 27751 , 27752 , 27753 , 27754 , 27755 , 27756 , 27757 , 27758 , 27759 , 27760 , 27761 , 27762 , 27763 , 27764 , 27765 , 27766)27689 , 27690 , 27691 , 27692 , 27693 , 27694 , 27695 , 27696 , 27697 , 27698 , 27699 , 27700 , 27701 , 27702 , 27703 , 27704 , 27705 , 27706 , 27707 , 27708 , 27709 , 27710 , 27711 , 27712 , 27713 , 27714 , 27715 , 27716 , 27717 , 27718 , 27719 , 27720 , 27721 , 27722 , 27723 , 27724 , 27725 , 27726 , 27727 , 27728 , 27729 , 27730 , 27731 , 27732 , 27733 , 27734 , 27735 , 27736 , 27737 , 27738 , 27739 , 27740 , 27741 , 27742 , 27743 , 27744 , 27745 , 27746 , 27747 , 27748 , 27749 , 27750 , 27751 , 27752 , 27753 , 27754 , 27755 , 27756 , 27757 , 27758 , 27759 , 27760 , 27761 , 27762 , 27763 , 27764 , 27765 , 27766)27716 , 27717 , 27718 , 27719 , 27720 , 27721 , 27722 , 27723 , 27724 , 27725 , 27726 , 27727 , 27728 , 27729 , 27730 , 27731 , 27732 , 27733 , 27734 , 27735 , 27736 , 27737 , 27738 , 27739 , 27740 , 27741,27742,27743,27744,27745,27746,27747,27747,27748,27749,27749,277551,27751,27752,27752,27753,27754,277754,27755,277756,27757 27766)27716 , 27717 , 27718 , 27719 , 27720 , 27721 , 27722 , 27723 , 27724 , 27725 , 27726 , 27727 , 27728 , 27729 , 27730 , 27731 , 27732 , 27733 , 27734 , 27735 , 27736 , 27737 , 27738 , 27739 , 27740 , 27741,27742,27743,27744,27745,27746,27747,27747,27748,27749,27749,277551,27751,27752,27752,27753,27754,277754,27755,277756,27757 27766)

在这里,我删除了 500 条记录,持续时间为 6553 毫秒。

在此处输入图像描述

4

1 回答 1

1

此选项可能会加快删除速度,但可能不会加快整体 SQL 处理时间。所以有了这个警告......

您可以先将要删除的键插入临时变量(或临时表)。然后,您可以在删除子句中使用连接,这样您就不必使用IN子句。前任。

DECLARE @MyTableVar table(id int)

INSERT INTO @MyTableVar (id) VALUES (27267)
//Repeat insert for other values, or use a different mechanism to insert keys
//into the temp table/table variable.
//Since that's not the focus of this question, I won't go into details on this
//portion.
...

DELETE FROM [your table]
FROM [your table] T1
INNER JOIN @MyTableVar T2
ON T1.id= T2.id

显然,插入需要时间,所以如果您关心交易的总时间,这可能无济于事。但是,如果使删除部分更快是主要关注点(例如,最小化锁定时间),那么这可能仍然有用。

有关包含 JOIN 和 http://msdn.microsoft.com/en-us/library/ms188927 的 DELETE 语句的使用示例,请参见http://msdn.microsoft.com/en-us/library/ms189835.aspx 。 aspx获取有关表变量的信息。

于 2013-06-14T22:49:17.500 回答