那麼,您需要幫助在 sql 中編寫問題嗎?你真的得到了它!您將學習一些可以在幾秒鐘內開始使用的最佳方法,這些方法將獎勵您數年的時間去尋找。
好吧,我承認,我也是設計師。因此,我讓我的 MCDBA 來炫耀我了解有關數據源的一兩件事。所以,最近我實際上做了比程序工作更多的 DBA 工作。是的,我能聽到你在哭泣“叛徒!” 我實際上已經訪問過黑暗面;“後端”。
這裡好的一面是我可以(用一個很累的表情來表達”)感覺到你的不適。許多開發人員將數據源視為某種本質的邪惡。根據我的經驗,普通開發人員只了解足夠的 SQL 來放置、升級和刪除數據庫中的單獨記錄。讓 DBA 管理粗糙的東西。遺憾的是,一些開發人員無法訪問 DBA(至少沒有人願意與他們合作)因此必須自己制定 SQL。此外,想像一下你將獲得的同儕尊重、豐厚的加薪,以及當你能夠讓“愚蠢的事情走得更快”時你將獲得的聖徒選舉。
所以,這裡是我實際發現的三個大人物,標準的“Joe Programmer”可以實施以提高他們的問題的行動時間。
一:開發中的任何工作!
首先,讓我們在盒子外面一點點相信。我知道我聲稱我將提供有關如何使您的查詢更快的指示……我也是。但是,這可能有點偏離常規。然而,這不是一個很好的提示嗎?你已經聽過一百遍了?
以下是背景:該應用程序仍在罐中,運行良好,現在開始了。幾天之內,您開始聽到有關應用程序組件運行緩慢的雜音。這些抱怨很快就變成了援助票。這些輔助票很快最終成為與負責人和用戶的會議。這些會議常常變成酗酒……你懂的。
這種不幸的情況也經常發生,並且有一個相對簡單的解決方案。您會看到,由於您的進度數據庫中的文檔相對較少,因此在您的進度設置中總是執行良好的!當然,如果我的主表中只有 30 個文檔,我的應用程序肯定也會出色地運行!一旦它進入現實生活,以及幾十萬或大量的文件被輸入或導入,效率調整的要求最終成為一個關鍵的表象。
服務很簡單;在您的成長氛圍中開發與您在手術的第一年所期望的完全相同的各種記錄。如果您有可導入的數據(例如,來自傳統系統或第 3 方提要),他們會將它們泵入。如果您沒有,那麼有很多開放資源實用程序的SQL 中級課程來開發模擬信息,這些信息將非常接近您的真實信息。現在,當您第一次編寫查詢時,如果您需要專注於某個查詢以避免未來的挫折和諮詢費用,那麼您將擁有一個非常好的概念。
B) 了解您的索引。
許多程序員完全忽略了索引。許多人不理解他們。索引只是數據庫表中數據的目錄。在創建應用程序時,打印出由索引組成的數據庫模式,以便您在編寫查詢時識別它們是什麼。如果缺少合適的索引,請讓有索引經驗的人開發它(無論是您、牆另一邊的程序員還是 DBA)。
這是效果。假設您正在編寫一個呼叫管理系統。您可能會有一個包含名字、姓氏等的表格。為簡單起見,我們將在一張帶有明顯區域名稱的大表格中完成此操作。您可能會編寫一個看起來像這樣的查詢:。
選擇 Person_ID、Name_First、Name_Last。
來自 Person_Data。
其中 Name_Last = @NameLast。
以及 Name_First = @NameFirst。
有 100 行,這肯定會很快工作。但是,隨著您的數據源增長到數千條記錄,查詢肯定會變慢,最終導致秒數變化。如果您只包含包含 Name_Last 和 Name_First 列的索引,那麼在應用程序的整個生命週期中,您肯定會有主要的即時返回時間。