සංස්කරණය කරන්න:
කරුණාකර පහත මාටින්ගේ අදහස් බලන්න:
CTE මතකයේ වගුවක් ලෙස ක්රියාත්මක නොවේ. එය විමසුම් අර්ථ දැක්වීමක් ඇතුළත් කිරීමේ ක්රමයක් පමණි. OP සම්බන්ධයෙන් ගත් කල එය පේළිගත වන අතර එය සිදු කිරීම හා සමාන SELECT Column1, Column2, Column3 FROM SomeTable
වේ. බොහෝ විට ඔවුන් ඉදිරියෙන් ද්රව්යමය ලෙස ක්රියා නොකරයි WITH T(X) AS (SELECT NEWID())SELECT * FROM T T1 JOIN T T2 ON T1.X=T2.X
, මේ නිසා පේළි කිසිවක් නොලැබේ , ක්රියාත්මක කිරීමේ සැලසුම් ද පරීක්ෂා කරන්න. සමහර විට ස්පූල් එකක් ලබා ගැනීමේ සැලසුම හැක් කළ හැකිය. මේ සඳහා ඉඟියක් ඉල්ලා සිටින සම්බන්ධක අයිතමයක් තිබේ. - මාටින් ස්මිත් පෙබරවාරි 15 '12 ට 17:08
මුල් පිළිතුර
සීටීඊ
MSDN පිළිබඳ වැඩිදුර කියවන්න
CTE විසින් මතකය භාවිතා කරන වගුව නිර්මාණය කරයි, නමුත් එය වලංගු වන්නේ එය අනුගමනය කරන නිශ්චිත විමසුම සඳහා පමණි. පුනරාවර්තනය භාවිතා කරන විට, මෙය structure ලදායී ව්යුහයක් විය හැකිය.
ඔබට වගු විචල්යයක් භාවිතා කිරීම ගැන සලකා බැලීමට අවශ්ය විය හැකිය. මෙම භාවිතා ලෙස එය තාවකාලික වගුව භාවිතා සහ එක් එක් එක්වන සඳහා නැවත වෙස් වීමට යාමකින් තොරව වාර කිහිපයක් භාවිතා කළ හැක. එසේම, ඔබට දැන් වාර්තා කිහිපයක් දිගටම පවත්වා ගැනීමට අවශ්ය නම්, ඊළඟ තේරීමෙන් පසු තවත් වාර්තා කිහිපයක් එක් කරන්න, තවත් ප්රකාශයකින් පසුව තවත් වාර්තා කිහිපයක් එක් කරන්න, ඉන්පසු එම වාර්තා අතලොස්සක් ආපසු එවන්න, එවිට මෙය පහසු ව්යුහයක් විය හැකිය. ක්රියාත්මක කිරීමෙන් පසු අතහැර දැමිය යුතු නැත. බොහෝ විට සින්ටැක්ටික් සීනි. කෙසේ වෙතත්, ඔබ පේළි ගණන අඩු මට්ටමක තබා ගන්නේ නම්, එය කිසි විටෙකත් තැටියට ක්රියාත්මක නොවේ. බලන්න SQL සේවාදායකයේ තාවකාලික වගුවක් සහ වගු විචල්යය අතර වෙනස කුමක්ද? වැඩි විස්තර සඳහා.
තාවකාලික වගුව
MSDN පිළිබඳ වැඩිදුර කියවන්න - මාර්ගයෙන් 40% ක් පමණ පහළට අනුචලනය කරන්න
තාවකාලික වගුවක් යනු වචනාර්ථයෙන් තැටියේ සාදන ලද වගුවකි, මකා දැමිය හැකි බව කවුරුත් දන්නා නිශ්චිත දත්ත ගබඩාවක. එම වගු තවදුරටත් අවශ්ය නොවන විට විනාශ කිරීම හොඳ දේවාලයක වගකීම වන නමුත් DBA හට ඒවා අතුගා දැමිය හැකිය.
තාවකාලික වගු වර්ග දෙකකින් යුක්ත වේ: දේශීය සහ ගෝලීය. MS SQL සේවාදායකය අනුව, ඔබ #tableName
දේශීය ##tableName
සඳහා තනතුරක් සහ ගෝලීය නම් කිරීම භාවිතා කරයි (හඳුනාගැනීමේ ලක්ෂණය ලෙස තනි හෝ ද්විත්ව # භාවිතා කිරීම සැලකිල්ලට ගන්න).
තාවකාලික වගු සමඟ, වගු විචල්යයන්ට හෝ සීටීඊයට ප්රතිවිරුද්ධව, ඔබට සුචිය සහ ඒ හා සමාන දෑ යෙදිය හැකි බව සලකන්න, මේවා වචනයේ සාමාන්ය අර්ථයෙන් නීත්යානුකූලව වගු වේ.
සාමාන්යයෙන් මම දිගු හෝ විශාල විමසුම් සඳහා තාවකාලික වගු භාවිතා කරමි, සහ මා සතුව දැනටමත් කුඩා දත්ත කට්ටලයක් තිබේ නම් සහ සීටීඊ හෝ වගු විචල්යයන් කුඩා දෙයක් සඳහා කේත ටිකක් ඉක්මනින් ස්ක්රිප්ට් කිරීමට අවශ්ය නම්. පළපුරුද්ද සහ අන් අයගේ උපදෙස් වලින් ඇඟවෙන්නේ ඔබ පේළි කුඩා සංඛ්යාවක් ඇති CTEs භාවිතා කළ යුතු බවයි. ඔබට විශාල සංඛ්යාවක් තිබේ නම්, තාවකාලික වගුවේ සුචිගත කිරීමේ හැකියාව ඔබට බොහෝ විට ප්රයෝජනවත් වනු ඇත.