天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

SQL養(yǎng)成一個好習慣是一筆財富

  我們做軟件開發(fā)的,大部分人都離不開跟數(shù)據(jù)庫打交道,特別是erp開發(fā)的,跟數(shù)據(jù)庫打交道更是頻繁,存儲過程動不動就是上千行,如果數(shù)據(jù)量大,人員流動大,那么我么還能保證下一段時間系統(tǒng)還能流暢的運行嗎?我么還能保證下一個人能看懂我么的存儲過程嗎?那么我結合公司平時的培訓和平時個人工作經(jīng)驗和大家分享一下,希望對大家有幫助。

  要知道SQL語句,我想我們有必要知道SQL Server查詢分析器怎么執(zhí)行我們的SQL語句的,我們很多人會看執(zhí)行計劃,或者用Profiler來監(jiān)視和調(diào)優(yōu)查詢語句或者存儲過程慢的原因,但是如果我們知道查詢分析器的執(zhí)行邏輯順序,下手的時候就胸有成竹,那么下手是不是有把握點呢?

  一、查詢的邏輯執(zhí)行順序

  (1) FROM left_table

  (3) join_type JOIN right_table (2) ON join_condition

  (4) WHERE where_condition

  (5) GROUP BY group_by_list

  (6) WITH {cube | rollup}

  (7) HAVING having_condition

  (8) SELECT (9) DISTINCT (11) top_specification select_list

  (9) ORDER BY order_by_list

  標準的 SQL 的解析順序為:

  (1) FROM 子句 組裝來自不同數(shù)據(jù)源的數(shù)據(jù)

  (2) WHERE 子句 基于指定的條件對記錄進行篩選

  (3) GROUP BY 子句 將數(shù)據(jù)劃分為多個分組

  (4) 使用聚合函數(shù)進行計算

  (5) 使用HAVING子句篩選分組

  (6) 計算所有的表達式

  (7) 使用ORDER BY對結果集進行排序

  二、執(zhí)行順序

  1. FROM:對FROM子句中前兩個表執(zhí)行笛卡爾積生成虛擬表vt1

  2. ON: 對vt1表應用ON篩選器只有滿足 join_condition 為真的行才被插入vt2

  3. OUTER(join):如果指定了 OUTER JOIN保留表(preserved table)中未找到的行將行作為外部行添加到vt2,生成t3,如果from包含兩個以上表,則對上一個聯(lián)結生成的結果表和下一個表重復執(zhí)行步驟和步驟直接結束。

  4. WHERE:對vt3應用 WHERE 篩選器只有使 where_condition 為true的行才被插入vt4

  5. GROUP BY:按GROUP BY子句中的列列表對vt4中的行分組生成vt5

  6. CUBE|ROLLUP:把超組(supergroups)插入vt6,生成vt6

  7. HAVING:對vt6應用HAVING篩選器只有使 having_condition 為true的組才插入vt7

  8. SELECT:處理select列表產(chǎn)生vt8

  9. DISTINCT:將重復的行從vt8中去除產(chǎn)生vt9

  10. ORDER BY:將vt9的行按order by子句中的列列表排序生成一個游標vc10

  11. TOP:從vc10的開始處選擇指定數(shù)量或比例的行生成vt11 并返回調(diào)用者

  看到這里,那么用過Linq to SQL的語法有點相似啊?如果我們我們了解了SQL Server執(zhí)行順序,那么我們就接下來進一步養(yǎng)成日常SQL的好習慣,也就是在實現(xiàn)功能的同時有考慮性能的思想,數(shù)據(jù)庫是能進行集合運算的工具,我們應該盡量的利用這個工具,所謂集合運算實際就是批量運算,就是盡量減少在客戶端進行大數(shù)據(jù)量的循環(huán)操作,而用SQL語句或者存儲過程代替。

  三、只返回需要的數(shù)據(jù)

  返回數(shù)據(jù)到客戶端至少需要數(shù)據(jù)庫提取數(shù)據(jù)、網(wǎng)絡傳輸數(shù)據(jù)、客戶端接收數(shù)據(jù)以及客戶端處理數(shù)據(jù)等環(huán)節(jié),如果返回不需要的數(shù)據(jù),就會增加服務器網(wǎng)絡和客戶端的無效勞動,其害處是顯而易見的,避免這類事件需要注意:

  A、橫向來看

  (1) 不要寫SELECT * 的語句,而是選擇你需要的字段。

  (2) 當在SQL語句中連接多個表時, 請使用表的別名并把別名前綴于每個Column上。這樣一來,就可以減少解析的時間并減少那些由Column歧義引起的語法錯誤。

如有表table1(ID,col1)和table2(ID,col2)
Select A.ID, A.col1, B.col2-- Select A.ID, col1, col2 –不要這么寫,不利于將來程序擴展from table1 A inner join table2 B on A.ID=B.ID Where …  

it知識庫SQL養(yǎng)成一個好習慣是一筆財富,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 又爽又黄又粗又大免费视频 | 国产亚洲精品欧洲在线视频 | 稚嫩挤奶h调教h | 爽爽影院免费观看 | 九九视频在线观看视频6 | 男女做爽爽爽视频免费软件 | 入禽太深免费视频10 | 性色欲情网站IWWW九文堂 | 妹妹成人网 | 国产免费福利在线视频 | 美美哒免费影视8 | 永久精品视频无码一区 | 无套内射无矿码免费看黄 | 精品国产三级a | 成人国产AV精品久久久久 | 日本十八禁无遮拦啪啪漫画 | 国产精品色吧国产精品 | 精品无码国产污污污免费网站2 | 熟女少妇内射日韩亚洲 | 国产精品第1页在线观看 | 亚洲AV午夜福利精品香蕉麻豆 | 黑人 尺寸 强行害怕 痛哭 | 蜜桃传媒视频 | 国产又黄又硬又粗 | 999久久久国产 | 啪啪啪社区 | 欧美多毛的大隂道 | 国产精品久久人妻互换毛片 | 两个洞一起插哦!好刺激 | 天美传媒 免费观看 | 九九这里有精品 | 美女动态图真人后进式 | 国产免费变态视频网址网站 | 日韩插啊免费视频在线观看 | 亚洲国产韩国欧美在线不卡 | 亚洲国产综合久久久无码色伦 | 青娱乐视觉盛宴国产视频 | 中文字幕午夜乱理片 | 免费观看成人毛片 | 伊人影院综合在线 | 俄罗斯aaaa一级毛片 |