2009-10-08 48 views

回答

0

因爲它們被解釋而不是編譯成機器/ CPU指令。

1

字符串比較並不比任何已編譯的程序慢,但通常比較很多很多字符串(比如表中的每一行),而且速度很慢。

至於循環:數據庫不是編譯器。它讀取你的SQL然後解釋它。如果您可以發送編譯後的代碼並讓數據庫執行它,則您不會注意到速度差異,但數據庫必須一次又一次解釋相同的代碼。

如果幸運的話,數據庫會將一個循環轉換爲內部形式(字節代碼或數據結構),但a)需要更多的時間,而不僅僅是將CPU指向某些代碼,以及b)仍然需要運行更多的代碼來解釋字節碼或數據結構。對於循環,它必須評估每一輪的條件。

1

關係數據庫經過優化,可以集中處理。任何需要數據庫逐行工作的遊標或循環或相關子查詢都會比較慢,通常很痛苦。用基於代碼的代碼(數據庫被設計爲最好處理的類型)代替代碼通常會將性能從幾小時提高到幾毫秒。