国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SQL筆記 -- 索引失效情況

這篇具有很好參考價值的文章主要介紹了SQL筆記 -- 索引失效情況。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.聯(lián)合索引

對于多列索引,過濾條件要使用索引必須按照索引建立時的順序,依次滿足,一旦跳過某個字段,索引后面的字段都無法被使用。
例如以下情況,索引從左到右的順序為age,classId,name,但是在查詢時跳過了age,因此該查詢無法使用索引。

CREATE INDEX idx_age_classid_name ON student(age,classId,name);
SELECT SQL_NO_CACHE * FROM student WHERE student.classId=1 AND student.name = 'abcd';

2. 使用函數(shù)

查詢條件中使用了函數(shù)會導(dǎo)致索引失效
例如以下情況,使用了函數(shù)導(dǎo)致索引失效

SELECT SQL_NO_CACHE * FROM student WHERE LEFT(student.name,3) = 'abc';

3. 含有計算

查詢條件中含有計算會導(dǎo)致索引失效
例如以下情況:

SELECT SQL_NO_CACHE id, stuno, NAME FROM student WHERE stuno+1 = 900001;

4. 類型轉(zhuǎn)換

查詢條件兩邊類型不同,需要自動或主動的進行類型轉(zhuǎn)換,會導(dǎo)致索引失效。例如以下情況,name字段假設(shè)為字符串,但查詢條件右邊為數(shù)字123,這時會自動進行類型轉(zhuǎn)換進行比較,因此無法使用索引。

-- 假設(shè)name字段有索引且name字段類型為字符串
SELECT SQL_NO_CACHE * FROM student WHERE name=123;

5. 范圍條件右邊的列索引失效

當有聯(lián)合索引且查詢條件含有范圍比較時,比如:(<) (<=) (>) (>=) 和 between 等,索引中被比較范圍的列的右邊的不能使用。
例如下列情況,索引從左到右包含age,classId,name,但在查詢條件中classId為范圍比較,因此索引中的name列無法使用,因為在索引中name在列classId的右邊。

create index idx_age_name_classId on student(age,classId,name);
SELECT SQL_NO_CACHE * FROM student 
WHERE student.age=30 AND student.classId>20 AND student.name = 'abc' ;

6. 不等于(!= 或者<>)索引失效

查詢條件中包含不等于的判斷時,索引無法使用。
例如:

CREATE INDEX idx_name ON student(NAME);
SELECT SQL_NO_CACHE * FROM student WHERE student.name != 'abc';

7. is null可以使用索引,is not null無法使用索引

在查詢條件中,IS NULL可以使用索引,而IS NOT NULL 無法使用索引。例如:

SELECT SQL_NO_CACHE * FROM student WHERE age IS NOT NULL;

8. like以通配符%開頭索引失效

在使用LIKE關(guān)鍵字進行查詢的查詢語句中,如果匹配字符串的第一個字符為’%‘,索引就不會起作用。只有’%'不在第一個位置,索引才會起作用。例如:

--可以使用索引
SELECT SQL_NO_CACHE * FROM student WHERE name LIKE 'ab%';
--無法使用索引
SELECT SQL_NO_CACHE * FROM student WHERE name LIKE '%ab%';

9. OR 前后存在非索引的列,索引失效

在WHERE子句中,如果在OR前的條件列進行了索引,而在OR后的條件列沒有進行索引,那么索引會失效。也就是說,OR前后的兩個條件中的列都是索引時,查詢中才使用索引。
因為OR的含義就是兩個只要滿足一個即可,因此只有一個條件列進行了索引是沒有意義的,只要有條件列沒有進行索引,就會進行全表掃描,因此所以的條件列也會失效。
例如以下情況,如果classId字段上沒有索引,那么該查詢語句無法使用索引。

SELECT SQL_NO_CACHE * FROM student WHERE age = 10 OR classid = 100;

10. 字符集不同

統(tǒng)一使用utf8mb4( 5.5.3版本以上支持)兼容性更好,統(tǒng)一字符集可以避免由于字符集轉(zhuǎn)換產(chǎn)生的亂碼。不同的字符集進行比較前需要進行轉(zhuǎn)換會造成索引失效。

注意:

(1)最好讓主鍵自增 ,讓存儲引擎自己為表生成主鍵,而不是我們手動插入 ,這樣在插入新的數(shù)據(jù)時不需要頁面分裂,避免性能損耗。

(2)將范圍查詢條件放置語句最后,這樣可以避免上述第五點情況。

(3)最好在設(shè)計數(shù)據(jù)庫的時候就將字段設(shè)置為 NOT NULL 約束,比如你可以將 INT 類型的字段,默認值設(shè)置為0。將字符類型的默認值設(shè)置為空字符串(‘’)。

(4)對于單列索引,盡量選擇針對當前query過濾性更好的索引。

(5)在選擇組合索引的時候,當前query中過濾性最好的字段在索引字段順序中,位置越靠前越好。文章來源地址http://www.zghlxwxcb.cn/news/detail-806758.html

到了這里,關(guān)于SQL筆記 -- 索引失效情況的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • GaussDB云數(shù)據(jù)庫SQL應(yīng)用系列—索引管理

    GaussDB云數(shù)據(jù)庫SQL應(yīng)用系列—索引管理

    目錄 一、前言 二、注意事項 三、索引創(chuàng)建 1、創(chuàng)建普通索引 2、創(chuàng)建唯一索引 3、創(chuàng)建多字段索引 4、創(chuàng)建部分索引 5、創(chuàng)建表達式索引 四、索引管理 1、查看索引信息 2、刪除索引 總結(jié) 隨著互聯(lián)網(wǎng)的快速發(fā)展,數(shù)據(jù)量呈現(xiàn)爆炸式增長。如何高效地管理和查詢這些數(shù)據(jù)成為了

    2024年02月09日
    瀏覽(96)
  • MySQL數(shù)據(jù)庫中的索引(含SQL語句)

    MySQL數(shù)據(jù)庫中的索引(含SQL語句)

    假設(shè)有一張表,表中有100萬條數(shù)據(jù),這100萬條數(shù)據(jù)在硬盤上是存儲在數(shù)據(jù)頁上的,一頁數(shù)據(jù)大小為16k。存儲100萬條數(shù)據(jù)那么就需要數(shù)據(jù)頁,假設(shè)其中有一條數(shù)據(jù)是“id為7900”的,那么如果要查詢這條數(shù)據(jù),其中SQL是SELECT * FROM 表名 WHERE id = 7900。在執(zhí)行這條SQL語句的時候,MyS

    2024年02月02日
    瀏覽(42)
  • MySQL數(shù)據(jù)庫進階第二篇(索引,SQL性能分析,使用規(guī)則)

    MySQL數(shù)據(jù)庫進階第二篇(索引,SQL性能分析,使用規(guī)則)

    本篇博客深入詳細地介紹了數(shù)據(jù)庫索引的概念和重要性。內(nèi)容包含:索引的概念和目標、索引的優(yōu)點與缺點。此外,博客還深入解析了三種主要的索引結(jié)構(gòu):B-Tree、B+Tree和Hash,提供了詳細的結(jié)構(gòu)解析和優(yōu)化方法,并通過插圖進一步增強了理解。 博客的部分內(nèi)容專注于對B-Tr

    2024年02月21日
    瀏覽(114)
  • 【數(shù)據(jù)庫·關(guān)系數(shù)據(jù)庫標準語言SQL·學習筆記】Microsoft SQL Server數(shù)據(jù)庫的建立和刪除

    【數(shù)據(jù)庫·關(guān)系數(shù)據(jù)庫標準語言SQL·學習筆記】Microsoft SQL Server數(shù)據(jù)庫的建立和刪除

    開發(fā)環(huán)境:SQL Server Management Studio(SSMS) 利用數(shù)據(jù)庫對象資源管理器創(chuàng)建數(shù)據(jù)庫 (1)右擊對象資源管理器中的數(shù)據(jù)庫,選擇新建數(shù)據(jù)庫 (2)在新建數(shù)據(jù)庫界面輸入數(shù)據(jù)庫名稱 ,并選擇確定 利用CREAT DATABASE命令在SSM工具的新建查詢中創(chuàng)建數(shù)據(jù)庫 1.語法格式 CREATE DATABASE dat

    2024年02月08日
    瀏覽(34)
  • 【SQL Server】數(shù)據(jù)庫開發(fā)指南(六)索引和視圖的使用技巧、方法與綜合應(yīng)用

    【SQL Server】數(shù)據(jù)庫開發(fā)指南(六)索引和視圖的使用技巧、方法與綜合應(yīng)用

    本系列博文還在更新中,收錄在專欄:#MS-SQL Server 專欄中。 本系列文章列表如下: 【SQL Server】 Linux 運維下對 SQL Server 進行安裝、升級、回滾、卸載操作 【SQL Server】數(shù)據(jù)庫開發(fā)指南(一)數(shù)據(jù)庫設(shè)計的核心概念和基本步驟 【SQL Server】數(shù)據(jù)庫開發(fā)指南(二)MSSQL數(shù)據(jù)庫開發(fā)對

    2024年02月06日
    瀏覽(126)
  • SQL筆記 -- 數(shù)據(jù)庫結(jié)構(gòu)優(yōu)化

    不常用的數(shù)據(jù)為冷數(shù)據(jù),反之則為熱數(shù)據(jù)。如果一個表中的數(shù)據(jù)存在明顯的使用頻率差異,那么可以將冷熱數(shù)據(jù)分離。通過這種分解可以提高表的查詢效率。對于字段很多且有些字段使用不頻繁的表,可以通過這種分解的方式來優(yōu)化數(shù)據(jù)庫的性能。 例如: 會員members表存儲會

    2024年01月22日
    瀏覽(98)
  • SQL學習筆記——創(chuàng)建數(shù)據(jù)庫和表

    SQL學習筆記——創(chuàng)建數(shù)據(jù)庫和表

    一、創(chuàng)建數(shù)據(jù)庫和表 1、創(chuàng)建數(shù)據(jù)庫 打開?SSMS(Microsoft SQL Server Management Studio)→新建查詢→輸入如下圖的sql語句→點擊執(zhí)行 成功后可以看到左側(cè)數(shù)據(jù)庫中成功創(chuàng)建了“CPXS”產(chǎn)品銷售數(shù)據(jù)庫。對應(yīng)路徑下新增數(shù)據(jù)庫文件。 說明: 主數(shù)據(jù)庫文件擴展名為.mdf,表示Main Data File;

    2024年02月01日
    瀏覽(35)
  • 【數(shù)據(jù)庫】哪些操作會導(dǎo)致索引失效

    【數(shù)據(jù)庫】哪些操作會導(dǎo)致索引失效

    ?? 個人博客: 個人主頁 ?? 個人專欄: 數(shù)據(jù)庫 ???? 功不唐捐,玉汝于成 目錄 前言 正文 結(jié)語 ?我的其他博客 ? 在數(shù)據(jù)庫管理中,索引的有效性對于查詢性能至關(guān)重要。然而,索引可能會因為各種操作而失效,從而影響到數(shù)據(jù)庫的性能和穩(wěn)定性。了解導(dǎo)致索引失效的常

    2024年02月19日
    瀏覽(22)
  • 數(shù)據(jù)庫學習筆記-----SQL查詢語句和代碼演示

    數(shù)據(jù)庫學習筆記-----SQL查詢語句和代碼演示

    SQL不區(qū)分大小寫,本文是鄒兆年老師的課件和課堂的部分內(nèi)容總結(jié),部分比較細的內(nèi)容請看課件 Db筆記(1).pdf 數(shù)值型: 整型:INT/SMALLINT/BIGINT? ? ? ? 4個字節(jié)/兩個字節(jié)/八個字節(jié) 浮點型:NUMERIC/DECIMAL(p,s):定點數(shù),p位有效數(shù)字,小數(shù)點后s位? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    2023年04月12日
    瀏覽(44)
  • SQL筆記(1)——MySQL創(chuàng)建數(shù)據(jù)庫(收藏吃灰版)

    SQL筆記(1)——MySQL創(chuàng)建數(shù)據(jù)庫(收藏吃灰版)

    本文詳細記錄MySQL創(chuàng)建一個數(shù)據(jù)庫的過程,不只是構(gòu)建步驟,更多的是每一步涉及到的知識點。一般創(chuàng)建數(shù)據(jù)庫有兩種方式,一種是命令,另外一種就是通過數(shù)據(jù)庫管理工具,本文主要記錄通過命令的方式創(chuàng)建; 后面的學習也都是基于這個數(shù)據(jù)庫進行的; 創(chuàng)建一個大學生成績

    2024年02月08日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包