2016-08-12 35 views
1

我想執行一些SELECT語句從應用程序數據庫(生產環境,而不是測試)中獲取一些數據,是否可以導致任何損壞?來自SELECT查詢的永久性損壞?

我聽說過不推薦使用SELECT *,因爲它會減慢速度等等,但是我認爲從長遠來看沒有什麼可能會受到影響?它能否以某種方式損害應用程序用戶的應用程序性能,甚至幾秒鐘?

+1

SELECT可能會降低系統運行速度,某些類型的複雜查詢可能會導致數據在TempDB中緩存,並且由於TempDB可能會增長。儘管SELECT通常不會損害系統,但它仍然可能會造成性能不平衡,這取決於數據庫系統的重要程度以及您將要執行的操作。 SELECT *不會創建自動降級,這更多的是在生產工作中最好避免的不良做法,使用快速查看記錄並不是什麼大問題 – Cato

+0

另一件可能出錯的事情是記錄在編輯模式下被鎖定,據說我被其他一些開發者告知,但我還沒有看到它。 – Cato

+0

但你寫的放緩和表現不平衡是暫時的嗎?那麼只有真正複雜的SELECT查詢才能使TempDB增長速度永久減慢? – Ceylon

回答

2

你不能真的造成永久的傷害。失控查詢可能會阻止其他人訪問數據庫,因爲它會關聯資源。它也可以填滿所有用戶共享的臨時空間。

但是,你將不得不有相當複雜的查詢來完成這樣的事情。僅僅把select *是一個否則表現良好的查詢不會導致這樣的問題。

你應該考慮兩件事。首先,瞭解執行計劃,以便了解數據庫如何工作以及每個查詢將如何執行。其次,要求提供一個帶有樣本數據的小型數據庫,這樣您就可以玩耍並減少干擾他人的機會。