我正在開展一項頗有創意的副項目;我的問題是關於使用BOOLEAN值來確定是否需要進一步的數據處理時所獲得的效率。通過BOOLEAN值優化SQL(mySQL)
例如:如果我有一個列出所有生物的表格。在另一個關係性的表中列出了它們的冬眠期,以及冬眠期間每天消耗的卡路里。
在(Creatures)表格中爲「休眠」BOOLEAN值是否有效?
如果爲true,則轉到「hibernation_creature_info_relations」表並找到具有該ID的生物並返回該信息。
這意味着對於「hibernates」= false值的所有生物而言,SQL將無法搜索「hibernation_creature_info_relations」大表。
或者當使用ID時,如此快速地檢查「hibernation_creature_info_relations」表的速度非常快,以至於如果設置了休眠的值,則必須處理基於做什麼的參數,從而實際上會對性能產生更大的影響爲真或假?
我希望這是足夠的信息來幫助您瞭解我所問的問題,如果不是,請讓我知道,以便我可以更改或包含更多詳細信息。
通過在其他表中複製休眠字段,您不會獲得太多收益。減少數據集大小所帶來的任何速度收益都將通過不得不重新加入原始表格來抵消。 –
另外,請記住,與命令式語言不同,您(通常)幾乎不能控制SQL中的執行排序/優化。這是優化器的工作,它可以執行各種各樣的事情來「加速」查詢 - 包括重新排序連接,使用表掃描,切換索引,選擇不同的順序以及創建臨時表。實際上,短路邏輯並沒有什麼特別的地方,特別是在連接的情況下(優化器可以隨意混淆它們)。 –