亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

哪些地方應(yīng)該創(chuàng)建索引

freeflydom
2023年8月18日 9:58 本文熱度 1579

create INDEX idx_status ON table_name(status);

select * from table_name where status = 1;

以下條件查詢大概率會(huì)走索引:

  1. 等值查詢:例如 where column_name = 'value'

  2. 范圍查詢where column_name BETWEEN 'value1' AND 'value2'where column_name > 'value',這種查詢也可能會(huì)走索引,特別是當(dāng)被索引的列的范圍較小時(shí)。

  3. 部分模糊查詢:主要是右模糊查詢,例如 where column_name LIKE 'value%'

  4. 排序和分組:當(dāng)查詢涉及到 ORDER BYGROUP BY 子句時(shí),如果被排序或分組的列上有索引,數(shù)據(jù)庫(kù)可能會(huì)選擇使用索引來(lái)加速查詢。

  5. 連接查詢:在連接查詢中,如果連接的字段有索引,數(shù)據(jù)庫(kù)可能會(huì)利用這些索引來(lái)優(yōu)化查詢。


2.  對(duì)于查找單條記錄的字段創(chuàng)建唯一索引

唯一鍵對(duì)應(yīng)的數(shù)據(jù)只有一條,要找到這條記錄只能全表掃描,數(shù)據(jù)量大會(huì)很慢。加唯一索引可以直接定位到記錄。

create UNIQUE INDEX idx_uid ON table_name(uid); select * from table_name where uid = 123;

3.  在表與表的關(guān)聯(lián)鍵上創(chuàng)建索引

表JOIN時(shí)依靠這個(gè)鍵進(jìn)行關(guān)聯(lián),如果不索引就會(huì)掃描全表去對(duì)比鍵值,數(shù)據(jù)量越大關(guān)聯(lián)效率越低。加索引可以快速匹配關(guān)聯(lián)鍵值。

create INDEX idx_post_id ON comments(post_id);  select * from comments where post_id = 12345;

4.  在經(jīng)常需要排序的字段建立索引

排序時(shí)如果不加索引,需要全表掃描獲取所有記錄再排序,數(shù)據(jù)量大時(shí)排序開銷巨大。索引可以按序直接讀取記錄,避免全表掃描。

create INDEX idx_create_time ON table_name(create_time); select * from table_name ORDER BY create_time DESC;

5.  對(duì)于頻繁用于left join的表的關(guān)聯(lián)鍵創(chuàng)建索引

左連表時(shí)都會(huì)全表掃描右表去匹配關(guān)聯(lián)條件,數(shù)據(jù)量大時(shí)非常慢。加索引可以快速過(guò)濾出匹配的記錄。

create INDEX idx_user_id ON table_a(user_id);   select * from table_a LEFT JOIN table_b ON table_a.user_id = table_b.user_id;

6.  在表的數(shù)據(jù)量巨大時(shí)對(duì)主鍵創(chuàng)建索引

主鍵默認(rèn)會(huì)有索引,如果去掉索引,增刪改查所有操作都會(huì)變慢,特別是主鍵查詢需要全表掃描。

create INDEX idx_id ON large_table(id);

7.  對(duì)于組合查詢的字段建立聯(lián)合索引

單列過(guò)濾效果不好時(shí),加聯(lián)合索引可以多列組合過(guò)濾提升效率。

這里的使用場(chǎng)景太廣泛,請(qǐng)注意。


假設(shè)我們有一個(gè)示例表格products,包含以下列:

  • product_id - 產(chǎn)品ID(唯一標(biāo)識(shí))

  • product_name - 產(chǎn)品名稱

  • category - 產(chǎn)品類別

我們希望對(duì)product_name列進(jìn)行右模糊查詢,以找到以特定字符串結(jié)尾的產(chǎn)品名稱。

在這種情況下,我們可以創(chuàng)建一個(gè)聯(lián)合索引,將category列放在product_name之前。這是因?yàn)镸ySQL和一些其他數(shù)據(jù)庫(kù)系統(tǒng)的索引優(yōu)化算法能更好地利用聯(lián)合索引的前綴部分。下面是創(chuàng)建聯(lián)合索引的示例 SQL 語(yǔ)句:

create INDEX idx_product_name_category ON products (product_name, category);

以上命令將在products表上創(chuàng)建一個(gè)名為idx_product_name_category的聯(lián)合索引,該索引涵蓋了product_namecategory兩列。

現(xiàn)在,假設(shè)我們要執(zhí)行右模糊查詢,找到以字符串"xyz"開頭且屬于某個(gè)特定類別的產(chǎn)品名稱:

select product_name from products where product_name LIKE 'xyz%' AND category = 'some_category';

在這個(gè)查詢中,MySQL可以有效地利用聯(lián)合索引idx_product_name_category,首先根據(jù)category過(guò)濾記錄,然后在滿足category條件的記錄中使用聯(lián)合索引來(lái)加速product_name的右模糊查詢。

8. 在文本字段創(chuàng)建前綴索引

上面一點(diǎn)其實(shí)說(shuō)到了模糊查詢的問(wèn)題,針對(duì)模糊查詢,有幾點(diǎn)需要提及:

  • 左模糊查詢:如果LIKE查詢的模式以通配符開頭(例如:'%abc'),大多數(shù)數(shù)據(jù)庫(kù)系統(tǒng)將無(wú)法使用普通B-tree索引來(lái)加速查詢。這是因?yàn)锽-tree索引對(duì)于模式開頭的通配符查詢效果較差。

  • 右模糊查詢:如果LIKE查詢的模式以通配符結(jié)尾(例如:'abc%'),大多數(shù)數(shù)據(jù)庫(kù)系統(tǒng)可以使用普通B-tree索引來(lái)加速查詢。這是因?yàn)锽-tree索引可以快速找到匹配模式前綴的記錄。

  • 左右模糊查詢:如果LIKE查詢的模式既以通配符開頭又以通配符結(jié)尾(例如:'%abc%'),通常無(wú)法有效使用普通B-tree索引。

  • 不以通配符開頭或結(jié)尾的模糊查詢:如果LIKE查詢的模式不以通配符開頭或結(jié)尾(例如:'abc''abcde'),并且不包含其他特殊字符(如轉(zhuǎn)義字符``),大多數(shù)數(shù)據(jù)庫(kù)系統(tǒng)可以使用普通B-tree索引來(lái)加速查詢。

因此在給文字字段創(chuàng)建索引后,應(yīng)盡量:

要使LIKE查詢走索引,可以考慮以下方法:

  • 右模糊查詢:如果可能,將通配符放在模式的末尾,例如:'abc%'。這樣,數(shù)據(jù)庫(kù)系統(tǒng)可以使用B-tree索引來(lái)快速定位匹配前綴的記錄。

  • 使用其他索引類型:一些數(shù)據(jù)庫(kù)系統(tǒng)支持針對(duì)模糊查詢的其他特殊索引類型。例如,PostgreSQL支持Trigram索引,用于處理模糊查詢。

  • 搜索引擎:使用外部搜索引擎,比如ELasticSearch

create INDEX idx_title_prefix ON table(title(10)); select * from table where title LIKE 'key%'

原文



該文章在 2023/8/18 9:59:00 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved