之前只知道在資料庫中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...