據我所知,在總體上是一個壞主意,使用SELECT *在SQL。有什麼異常情況嗎?謝謝!當它是確定使用SELECT *在SQL
0
A
回答
7
當您需要每隔列,當前和未來,考慮到一些可能被添加或刪除。
通常情況下,這是完全需要的數據庫信息,如架構利斯特,或者如果你正在做分析,試圖找出你所需要的信息實際上僅駐留工裝的情況。
這幾乎是從來沒有需要的「真正」的應用程序,應該只知道,並要求,他們需要什麼。
你不希望你的應用程序中落下一個尖叫堆只是因爲數據庫的其他一些用戶決定他們需要42加每行2GB BLOB列:-)
0
通常它只事項如果你正在移動大量的數據,那麼你的吞吐量就會變得越來越大。
我用它與頻率,因爲它使變更表,只要你的應用程序原型而言無痛的。
至於處理,也不要緊 - 可言,由於MySQL的性質。
所以不要擔心。
0
如果使用它能夠自動拉列名和所有的名字隨後在應用程序中進一步使用映射的代碼,你可以逃脫使用SELECT *
。
然而,它通常是一個壞主意,因爲它可能是很有誘惑力的假設您想要檢索的列的位置(具體取決於您使用DB API,它可以被索引爲基礎的,而不是基於域名的) 。爲了便於閱讀,最好還是明確寫下你想要檢索的內容。
使用SELECT *
時,有可能導致問題的幾件事情:
- 如果列標籤沒有明確的界定(如
SUM(...)
或其他操作從視圖或CTE來), - 如果選擇中的多個列具有相同的名稱(例如,帶有
AS
子句的聯合或視圖/ CTE)。
Java的ResultSet
說以下有關名稱:
值可以使用任一列的索引號或 列的名稱進行檢索。一般來說,使用列索引將更有效率爲 。
[...]
當吸氣劑的方法被調用,列名和 具有相同的名稱的多個列中,第一匹配列的值將被返回 。列名選項設計用於在生成結果集的SQL查詢中使用名稱列 。對於在查詢中未明確命名的 列,最好使用 列號。如果使用列名稱,編程人員應小心謹慎,以確保它們唯一引用可通過SQL AS子句保證的預期列 。
相關問題
- 1. SQL Select案例 - 我是否正確使用它?
- 2. 是t-sql確定性中的select *嗎?
- 3. 當使用XLSX解析excelsheet - 它是扔_fs是不確定的
- 4. 它是確定在
- 5. 當使用foreach而不是select時不正確的EntitySet
- 6. 當它是確定使用多個源文件有一個頭
- 7. 無法確定,即使它是在
- 8. 如何確定SQL查詢是否是SELECT?
- 9. SQL Server - 確實[SELECT]鎖定[UPDATE]?
- 10. SELECT *確定性?
- 11. 火力地堡數據是「不確定的」,當它是不是
- 12. sql select *精確的行數
- 13. SQL對象 - 如何正確使用它
- 14. 它是確定使用派生類在基類功能
- 15. 它是確定使用POST在服務器上的GET請求
- 16. WHERE(NOT EXISTS)(SELECT id ...只是有時它確實存在
- 17. 當前SELECT的SQL更新
- 18. 我可以使用「HostingEnvironment」來確定它是Web還是Win
- 19. 如何確定它是否是使用PHP的移動設備?
- 20. SQL使用GROUP BY,使得它導致原來的SELECT
- 21. SQL SELECT語句是否穩定?
- 22. 子集是不正確的,但在SQL Developer中執行它的確定
- 23. 使用Javascript來確定文件是否存在,當地
- 24. 確定當前頁面是否在Rails中使用SSL
- 25. 自定義SQL SELECT
- 26. 使用SQL查詢,以確定是否一個表存在
- 27. 使用DB2 SQL確定閏日是否落在兩天之間
- 28. 不確定使用Spring加載SELECT對象的正確方法
- 29. SQL入門:使用SELECT正確地在我的第一個SQL項目
- 30. 正確使用select和js在一起?
哼哼......不確定'SELECT *'是個好主意,*特別是*當您定期更改表格時。 – Bruno 2012-07-24 02:24:42
但是,如果你正在原型化自己的應用程序,那麼你會知道你使用的是什麼字段。例如,在foreach()中,無論如何你只使用某些字段。我並不是說所有情況都需要保證SELECT *:我多次說這是完全不相關的。 – David 2012-07-24 02:26:49
這取決於可用的API,如果您根據列索引而不是列名得到列,則可能導致錯誤的代碼。一般來說這是不好的做法(儘管不像沒有列名的INSERT那樣糟糕)。 – Bruno 2012-07-24 02:28:58