偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

聊一下SQL高效查詢(xún)建議

運(yùn)維 數(shù)據(jù)庫(kù)運(yùn)維
為什么別人的查詢(xún)只要幾秒,而你的查詢(xún)語(yǔ)句少則十多秒,多則十幾分鐘甚至幾個(gè)小時(shí)?與你的查詢(xún)語(yǔ)句是否高效有很大關(guān)系。

[[396091]]

本文轉(zhuǎn)載自微信公眾號(hào)「SQL數(shù)據(jù)庫(kù)開(kāi)發(fā)」,作者丶平凡世界  。轉(zhuǎn)載本文請(qǐng)聯(lián)系SQL數(shù)據(jù)庫(kù)開(kāi)發(fā)公眾號(hào)。

為什么別人的查詢(xún)只要幾秒,而你的查詢(xún)語(yǔ)句少則十多秒,多則十幾分鐘甚至幾個(gè)小時(shí)?與你的查詢(xún)語(yǔ)句是否高效有很大關(guān)系。

今天我們來(lái)看看如何寫(xiě)出比較高效的查詢(xún)語(yǔ)句。

1.盡量不要使用NULL當(dāng)默認(rèn)值

在有索引的列上如果存在NULL值會(huì)使得索引失效,降低查詢(xún)速度,該如何優(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ě)后的查詢(xún)語(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ě)

例如:

  1. SELECT * FROM T1 WHERE NUM=10 OR NUM=20 
  2.  
  3. 可以改寫(xiě)成 
  4.  
  5. SELECT * FROM T1 WHERE NUM=10 
  6.  
  7. UNION ALL 
  8.  
  9. SELECT * FROM T1 WHERE NUM=20 

4.IN和NOT IN也要慎用

遇到連續(xù)確切值的時(shí)候 ,我們可以使用BETWEEN AND來(lái)進(jìn)行優(yōu)化

例如:

  1. SELECT * FROM T1 WHERE NUM IN (5,6,7,8) 

可以改寫(xiě)成:

  1. SELECT * FROM T1 WHERE NUM BETWEEN 5 AND 8. 

5.子查詢(xún)中的IN可以使用EXISTS來(lái)代替

子查詢(xún)中經(jīng)常會(huì)使用到IN,如果換成EXISTS做關(guān)聯(lián)查詢(xún)會(huì)更快

例如:

  1. SELECT * FROM T1 WHERE ORDER_ID IN (SELECT ORDER_ID FROM ORDER WHERE PRICE>20); 

可以改寫(xiě)成:

  1. 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)于上面的查詢(xún)語(yǔ)句。

6.模糊匹配盡量使用后置匹配

在進(jìn)行模糊查詢(xún),使用LIKE時(shí)盡量使用后置匹配,這樣會(huì)走索引,減少查詢(xún)時(shí)間。

例如:

  1. SELECT * FROM T1 WHERE NAME LIKE '%李四%' 

或者

  1. 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)谙路搅粞浴?/p>

 

責(zé)任編輯:武曉燕 來(lái)源: SQL數(shù)據(jù)庫(kù)開(kāi)發(fā)
相關(guān)推薦

2021-04-21 14:19:52

javaignalHandle接口

2025-01-10 11:07:28

2022-09-29 08:32:14

查詢(xún)語(yǔ)句OR

2022-02-08 08:31:52

const關(guān)鍵字C語(yǔ)言

2021-04-21 21:06:11

數(shù)據(jù)結(jié)構(gòu)

2021-06-30 00:19:43

AOP動(dòng)態(tài)代理

2021-03-10 00:02:01

Redis

2021-05-31 06:28:35

AutoMapper對(duì)象映射器

2021-03-26 00:20:34

NFT區(qū)塊鏈數(shù)據(jù)庫(kù)

2021-08-07 07:56:59

Node邏輯對(duì)象

2019-01-31 07:16:06

2022-12-26 08:13:54

子查詢(xún)MySQL

2022-08-25 10:37:00

CIOIT領(lǐng)導(dǎo)者

2021-08-30 14:28:56

在線寫(xiě)作協(xié)作文檔辦公軟件

2021-06-06 12:59:14

實(shí)現(xiàn)方式計(jì)數(shù)

2022-10-09 08:35:06

SQL自定義排序

2021-08-05 07:28:27

SQL觸發(fā)器結(jié)構(gòu)

2020-09-29 09:41:50

Spring Boot項(xiàng)目代碼

2011-07-20 16:13:03

SQL Profile數(shù)據(jù)庫(kù)

2018-10-15 05:42:52

超參數(shù)搜索深度學(xué)習(xí)數(shù)據(jù)科學(xué)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)