遞迴sql的功率到達MySQL和MariaDB
遞迴式sql是當今許多現代資料庫中最吸引人、最強大、最危險的特性之一,它使用了第一99標準中首次引入的共同表示式(CTE)。中的的第一個實現開始出現在2006-7中,在MySQL 8.0和MariaDB版本10.2.2中出現。
公共表表示式(帶遞迴子句…子句)
遞迴式sql是通過使用共同或CTE實現的,它是一個臨時命名的resultset,它是從一個簡單的查詢派生出來的,並在選擇、插入、更新或刪除語句的執行範圍內定義。CTE通常用於簡化和(或)將程式碼轉換為可讀性更強的部分,從而提高了sql程式碼的可讀性。中的的一個“特性”是能夠遞迴引用命名的resultset,從而遞迴地引用。
通過遞迴的sql查詢,您可以實現您不可能想象到的在這種型別的sql和它執行的速度上是可能的事情。您可以解決許多型別的業務問題,甚至重寫一些複雜的sql/應用程式邏輯,直到對資料庫進行簡單的recursiveSQL呼叫。
遞迴CTE的一些有用的用法示例是,您可以使用它來查詢資料中的空白,建立組織結構圖並建立測試資料。
我最喜歡的使用遞迴式sql查詢的方法是,根據資料的複雜性和可用的資料庫/系統資源,生成大量的測試資料。使用遞迴CTE,我們可以在非常短的時間內產生數百、數千或數百萬條記錄,然後只限於可用的資料庫記憶體和其他資料庫/系統資源。與我所見和經歷的其他測試資料過程相比,遞迴查詢產生的測試資料更快。
此外,已經證明遞迴查詢比其他需要幾天的查詢在數分鐘內執行的查詢要好。
遞迴這個詞說的都是。您有一個查詢,該查詢會反覆呼叫自己的某個起始點,即極其重要a.a終點(A)安全出口就像我說的那樣。如果你沒有一個安全的退出,或者你的遞迴公式超出它,你就陷入了深深的麻煩。您的查詢將進入無限環導致非常高的cpu和非常高的日誌利用率,這將導致記憶體和/或儲存耗盡。如果你的查詢失控,你必須快速思考並停止它。如果您不能這樣做,那麼立即通知您的DBA,這樣他/她就可以通過殺死runnaway執行緒來阻止資料庫系統的阻塞。
相關文章
- Oracle和Mysql遞迴OracleMySql遞迴
- 遞迴和尾遞迴遞迴
- sql server遞迴SQLServer遞迴
- SQL 遞迴思想SQL遞迴
- SQL中的遞迴用法SQL遞迴
- 在python裡遞迴最多達到多少次Python遞迴
- Oracle SQL的遞迴查詢OracleSQL遞迴
- 遊標和遞迴sql 的一些程式碼遞迴SQL
- oracle中的遞迴sql查詢 connect by prior實現遞迴Oracle遞迴SQL
- SQL Server遞迴查詢SQLServer遞迴
- Oracle遞迴查詢sqlOracle遞迴SQL
- MS SQL Server的遞迴查詢SQLServer遞迴
- SQL with as 的用法 以及遞迴函式的寫法 遞迴層次查詢SQL遞迴函式
- 遞迴和遞推總結遞迴
- 這樣做,你的面試成功率將達到 90%面試
- MS SQL Server的遞迴查詢(2)SQLServer遞迴
- SQL Server中CTE的另一種遞迴方式-從底層向上遞迴SQLServer遞迴
- sql無限遞迴查詢SQL遞迴
- sql遞迴查詢子級SQL遞迴
- 翻譯:非遞迴CTE(已提交到MariaDB官方手冊)遞迴
- Vue3.0的遞迴監聽和非遞迴監聽Vue遞迴
- kingbase SQL最佳化案例 ( union遞迴 改 cte遞迴 )SQL遞迴
- JavaScript和ABAP的尾遞迴JavaScript遞迴
- 漢諾塔和遞迴遞迴
- mysql處理遞迴的一個例子MySql遞迴
- 遞迴和非遞迴分別實現求n的階乘遞迴
- 斐波那契數列的遞迴和非遞迴實現遞迴
- 原:八皇后問題的遞迴和非遞迴Java實現遞迴Java
- ?30 秒瞭解尾遞迴和尾遞迴優化遞迴優化
- Java遍歷資料夾的兩種方法(非遞迴和遞迴)Java遞迴
- 目標和——遞迴的實踐遞迴
- 二分法的簡單實現——-遞迴和非遞迴遞迴
- Android遍歷所有控制元件的遞迴和非遞迴實現Android控制元件遞迴
- 對遞迴和迭代的效率的思考和分析遞迴
- 快速排序【遞迴】【非遞迴】排序遞迴
- 程式設計師,這樣面試,你的成功率能達到 90%!程式設計師面試
- 遞迴的應用場景和呼叫機制、遞迴需要遵守的重要規則遞迴
- 我對遞迴的理解和總結遞迴