關於MySQL資料庫中使用like對索引的影響

2021-10-05 03:13:53 字數 2229 閱讀 8064

之前只知道在資料庫中like對索引的影響是%的位置不同,%在配置值的後面才能執行索引,今天有時間就單獨寫個表看看到底什麼區別;

##建立表 設定主鍵自增

create table test(id int(11) not null auto_increment,name varchar(255),primary key(id) );

## 新增索引

alter table test add index name_index (name);

## 檢視索引

show index from test;

## 新增記錄

insert into test values((1,'qq'),(2,'qqf'),(3,'abc'),(4,'aabc');

生成表後進行檢視like對索引的影響:

## 第一種不加%

## 第二種%在後

## 第三種%在前

## 第四中前後都有%

比較一下這四種情況,發現都使用了索引,possible_keys表示的是可以使用的索引,key表示查詢過程中實際使用的索引

type中有index,和range兩種 

index: index型別遍歷全表索引樹

range:只檢索給定範圍的行,使用乙個索引來選擇行

現在表中只有兩個字段,主鍵id是和name都是有索引的字段,下面在加乙個不是索引的字段,

alter table `test`

add column `status` int(11) unsigned null default 1

現在我們在重新走一遍這四個查詢:

## 第一種不加%

## 第二種%在後

## 第三種%在前

## 第四中前後都有%

結果就是%在匹配值後面才能用到索引,和前面的比較就是之前的字段是id,name 而id是主鍵,是索引的一部分 所以select * 取的兩個欄位都是索引字段。所以 like 語句都會使用到索引。

後面加了乙個非索引欄位status,並且取資料列表裡也存在status欄位,所以%在匹配值前的情況就會受影響。

當然如果不是select * ,而是select id 或者select name 再或者 select id,name 都會使用上索引。

大家有條件的也可以試試,看看這個結果,至少可以加深記憶。

QT中使用MySQL資料庫

1.鏈結mysql 首先正確安裝mysql資料庫。然後將libmysql.lib檔案放在qt安裝路徑下的對應編譯器的lib資料夾下,如f software qt5.9.5 5.9.5 mingw53 32 lib。將libmysql.dll檔案放在qt安裝路徑對應編譯器的bin資料夾下。最後可正常鏈...

C 中使用mysql資料庫方法

通過vc開發mysql資料庫應用軟體有多種方式 一 通過myodbc介面 二 通過connector c l介面 三 通過mysql c api介面 四 第三方封裝的mysql類 在經過反覆比較,我還是選擇了mysql c api方式來進行mysql的開發。在vc中使用mysql的步驟如下 2 安裝...

在python中使用mysql資料庫

先用pip安裝一下mysql pip install pymysql使用的時候,import python import pymysql python連線資料庫操作 開啟資料庫連線 def connectdb print 連線到mysql伺服器.db pymysql.connect localhos...