<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          原創(chuàng) | SQL優(yōu)化之如何高效查詢

          共 1437字,需瀏覽 3分鐘

           ·

          2020-01-06 23:23

          點(diǎn)擊上方SQL數(shù)據(jù)庫(kù)開(kāi)發(fā),關(guān)注獲取SQL視頻教程


          SQL專欄

          SQL基礎(chǔ)知識(shí)匯總

          SQL高級(jí)知識(shí)匯總


          為什么別人的查詢只要幾秒,而你的查詢語(yǔ)句少則十多秒,多則十幾分鐘甚至幾個(gè)小時(shí)?與你的查詢語(yǔ)句是否高效有很大關(guān)系。今天我們來(lái)看看如何寫(xiě)出比較高效的查詢語(yǔ)句。
          1. 盡量不要使用NULL當(dāng)默認(rèn)值在有索引的列上如果存在NULL值會(huì)使得索引失效,降低查詢速度,該如何優(yōu)化呢?例如:SELECT * ?FROM [Sales].[Temp_SalesOrder] WHERE UnitPrice IS NULL我們可以將NULL的值設(shè)置成0或其他固定數(shù)值,這樣保證索引能夠繼續(xù)有效。SELECT * ?FROM [Sales].[Temp_SalesOrder] WHERE UnitPrice =0這是改寫(xiě)后的查詢語(yǔ)句,效率會(huì)比上面的快很多。
          2. 盡量不要在WHERE條件語(yǔ)句中使用!=或<>在WHERE語(yǔ)句中使用!=或<>也會(huì)使得索引失效,進(jìn)而進(jìn)行全表掃描,這樣就會(huì)花費(fèi)較長(zhǎng)時(shí)間了。
          3. 應(yīng)盡量避免在 WHERE子句中使用 OR遇到有OR的情況,我們可以將OR使用UNION ALL來(lái)進(jìn)行改寫(xiě)例如:SELECT * FROM T1 WHERE NUM=10 OR NUM=20可以改寫(xiě)成SELECT * FROM T1 WHERE NUM=10UNION ALLSELECT * FROM T1 WHERE NUM=20
          4. IN和NOT IN也要慎用遇到連續(xù)確切值的時(shí)候?,我們可以使用BETWEEN AND來(lái)進(jìn)行優(yōu)化例如:SELECT * FROM T1 WHERE NUM IN (5,6,7,8)可以改寫(xiě)成:SELECT * FROM T1 WHERE NUM BETWEEN 5 AND 8.


          5. 子查詢中的IN可以使用EXISTS來(lái)代替子查詢中經(jīng)常會(huì)使用到IN,如果換成EXISTS做關(guān)聯(lián)查詢會(huì)更快例如:SELECT * FROM T1 WHERE ORDER_ID IN (SELECT ORDER_ID FROM ORDER WHERE PRICE>20);可以改寫(xiě)成:SELECT * FROM T1 AS A WHERE EXISTS (SELECT 1 FROM ORDER ?AS B WHERE A.ORDER_ID=B.ORDER_ID AND B.PRICE>20)雖然代碼量可能比上面的多一點(diǎn),但是在使用效果上會(huì)優(yōu)于上面的查詢語(yǔ)句。
          6. 模糊匹配盡量使用后置匹配在進(jìn)行模糊查詢,使用LIKE時(shí)盡量使用后置匹配,這樣會(huì)走索引,減少查詢時(shí)間。例如:SELECT * FROM T1 WHERE NAME LIKE '%李四%'或者SELECT * FROM T1 WHERE NAME LIKE '%李四'均不會(huì)走索引,只有當(dāng)如下情況SELECT * FROM T1 WHERE NAME LIKE '李四%'才會(huì)走索引。
          上述這些都是平常經(jīng)常會(huì)遇到的,就直接告訴大家怎么操作了,具體可以下去做試驗(yàn)嘗試一下,今天就講到這里,如有什么疑問(wèn),請(qǐng)?jiān)谙路搅粞浴?/span>
          ——End——

          后臺(tái)回復(fù)關(guān)鍵字:資料領(lǐng)取,獲取一份精心整理的技術(shù)干貨

          后臺(tái)回復(fù)關(guān)鍵字:進(jìn)群,帶你進(jìn)入高手如云的交流群。

          推薦閱讀

          點(diǎn)擊「閱讀原文」了解SQL訓(xùn)練營(yíng)
          瀏覽 30
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色哟哟一区二区三区 | 美女被内射 | 深爱激情在线视频 | 黄色操逼视频免费看 | 成人尹人网 |