2010-05-26 49 views
4

Sybase中的表有一個唯一的varchar(32)列和一些其他列。它也被編入這一欄。將排序後的數據插入到Sybase表中是否更快?

定期地,我需要截斷它,並用其他表中的新數據重新填充。

insert into MyTable 
    select list_of_columns 
    from OtherTable 
    where some_simple_conditions 
    order by MyUniqueId 

如果我們正在處理幾千行,這將有助於加快insert如果我們爲selectorder by條款?如果是這樣,這個時間增益是否會補償訂購select查詢所需的額外時間?

我可以試試這個,但是目前我的數據集很小,結果也不多。

回答

2

只有幾千行,即使速度稍快,您也不會看到太多差異。如果您預計接近10,000行左右,那麼您可能會開始看到明顯的差異 - 嘗試創建一個大型測試數據集並制定一個基準來查看它是否有幫助。

由於您正在截斷,但刪除並重新創建索引應該比插入到具有現有索引的表中更快。再次,對於一張相對較小的桌子,這應該沒有關係 - 如果所有東西都可以舒適地適合可用RAM的數量,那麼它會非常快。

另一個想法 - 取決於Sybase如何進行索引,傳遞一個排序列表可能會減慢它的速度。嘗試使用ORDER BY RANDOM()進行基準測試,看看是否是這種情況。

0

我不相信在INSERT中的命令速度,所以不要在運行ORDER BY時妄圖提高性能。

0

我想說,執行這些功能的順序並不重要。 只需使用正常插入INSERT INTO的方法,然後完成其餘的操作。

0

我不能說關於sybase,但MS SQL插入更快,如果記錄仔細排序。排序可以最大限度地減少索引展開次數。如你所知,填充表ant然後創建索引更好。在插入之前排序數據會導致類似的效果。

0

您插入數據的順序一般會是而不是可以提高性能。影響插入速度的問題與數據存儲的數據庫機制有關,而不是插入的順序。

將大量數據插入表中時可能會遇到的一個性能問題是更新表上的索引所花費的時間。但是,在這種情況下,插入數據的順序不會對您有所幫助。

如果你有大量的數據,並通過很多我的意思是幾十萬也許百萬的,你可以考慮下探表上的索引,插入記錄,然後重新創建索引記錄

0

刪除和重新創建索引(至少在SQL Server中)是迄今爲止插入操作的最佳方式。至少在某些時候;-)儘管如此,如果你沒有注意到任何主要的性能問題,請不要惹它。

相關問題