91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決MySql整型索引和字符串索引失效或隱式轉換問題

發布時間:2021-11-18 13:07:02 來源:億速云 閱讀:249 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“如何解決MySql整型索引和字符串索引失效或隱式轉換問題”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何解決MySql整型索引和字符串索引失效或隱式轉換問題”這篇文章吧。

問題重現

首先我們先創建一張用戶表test_user,其中USER_ID為了效果我們設置為varchar類型且加上唯一索引。

CREATE TABLE test_user (
  ID int(11) NOT NULL AUTO_INCREMENT,
  USER_ID varchar(11) DEFAULT NULL COMMENT '用戶賬號',
  USER_NAME varchar(255) DEFAULT NULL COMMENT '用戶名',
  AGE int(5) DEFAULT NULL COMMENT '年齡',
  COMMENT varchar(255) DEFAULT NULL COMMENT '簡介',
  PRIMARY KEY (ID)
  UNIQUE KEY UNIQUE_USER_ID (USER_ID) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

表格數據如下(嘻嘻 數據依舊使用與上次Mysql的文章MySQL使用UNION連接兩個查詢排序失效相同的數據,但是要注意表結構不同。)

IDUSER_IDUSER_NAMEAGECOMMENT
1111開心菜鳥18今天很開心
2222悲傷菜鳥21今天很悲傷
3333認真菜鳥30今天很認真
4444高興菜鳥18今天很高興
5555嚴肅菜鳥21今天很嚴肅

接下來我們執行以下sql

EXPLAIN SELECT * FROM test_user WHERE USER_ID = 111;

發現給出的解釋結果如下:

idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra
1SIMPLEtest_user
ALL



5
Using where

我們給條件加上引號后再解釋以下:

EXPLAIN SELECT * FROM test_user WHERE USER_ID = '111';

這時候我們發現varchar類型的字段在作為字符串查詢的時候使用了索引,在以數值類型進行查詢時是不使用索引的。

問題引申

那么問題來了,如果字段是整型的且加上索引,以字符串查詢時會不會也不走索引呢?實踐出真知,讓我們再接著往下測試一下。

-- 將USER_ID的類型修改為整型
CREATE TABLE test_user (
  ID int(11) NOT NULL AUTO_INCREMENT,
  USER_ID int(11) DEFAULT NULL COMMENT '用戶賬號',
  USER_NAME varchar(255) DEFAULT NULL COMMENT '用戶名',
  AGE int(5) DEFAULT NULL COMMENT '年齡',
  COMMENT varchar(255) DEFAULT NULL COMMENT '簡介',
  PRIMARY KEY (ID),
  UNIQUE KEY UNIQUE_USER_ID (USER_ID) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
EXPLAIN SELECT * FROM test_user WHERE USER_ID = 111;
EXPLAIN SELECT * FROM test_user WHERE USER_ID = '111';

在執行了上面兩個語句后我們發現,int類型的字段無論是以字符串查詢還是以數值型查詢都會走索引。

以上是“如何解決MySql整型索引和字符串索引失效或隱式轉換問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玛多县| 永泰县| 阿巴嘎旗| 铁岭市| 潜山县| 丰宁| 伊宁县| 陈巴尔虎旗| 无为县| 湖州市| 秀山| 新竹县| 河东区| 桃源县| 南城县| 宝丰县| 广饶县| 盐津县| 特克斯县| 建瓯市| 康保县| 南京市| 汶上县| 双辽市| 弋阳县| 密山市| 云梦县| 金堂县| 库伦旗| 资阳市| 天全县| 德保县| 华容县| 丹江口市| 永顺县| 建始县| 淳安县| 安达市| 成安县| 得荣县| 吴江市|