使用萬用字元(%%)改善 MySQL 搜尋效能?


不,當有前導萬用字元時,MySQL 不會改善搜尋效能,因為 MySQL 無法使用索引。如果你改成‘anyLetter%',就可以使用索引

建議使用帶有後綴萬用字元的語法。語法如下 −

SELECT *FROM yourTableName WHERE yoorColumnName LIKE ‘anyLetter%’;

建立表的查詢如下 −

mysql> create table TrailingWildCardDemo
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> Name Varchar(20),
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.71 sec)

現在,你可以使用 insert 命令將一些記錄插入表中。查詢如下 −

mysql> insert into TrailingWildCardDemo(Name) values('John');
Query OK, 1 row affected (0.13 sec)
mysql> insert into TrailingWildCardDemo(Name) values('Johnson');
Query OK, 1 row affected (0.17 sec)
mysql> insert into TrailingWildCardDemo(Name) values('Mike');
Query OK, 1 row affected (0.16 sec)
mysql> insert into TrailingWildCardDemo(Name) values('Kevin');
Query OK, 1 row affected (0.23 sec)
mysql> insert into TrailingWildCardDemo(Name) values('Adam');
Query OK, 1 row affected (0.20 sec)
mysql> insert into TrailingWildCardDemo(Name) values('Ethan');
Query OK, 1 row affected (0.16 sec)
mysql> insert into TrailingWildCardDemo(Name) values('James');
Query OK, 1 row affected (0.19 sec)

使用 select 語句顯示錶中的所有記錄。查詢如下 −

mysql> select *from TrailingWildCardDemo;

輸出如下 −

+----+---------+
| Id | Name    |
+----+---------+
|  1 | John    |
|  2 | Johnson |
|  3 | Mike    |
|  4 | Kevin   |
|  5 | Adam    |
|  6 | Ethan   |
|  7 | James   |
+----+---------+
7 rows in set (0.00 sec)

以下是字尾萬用字元的查詢 −

mysql> select *from TrailingWildCardDemo where Name LIKE 'j%';

輸出如下 −

+----+---------+
| Id | Name    |
+----+---------+
|  1 | John    |
|  2 | Johnson |
|  7 | James   |
+----+---------+
3 rows in set (0.00 sec)

更新於: 2019-07-30

381 次瀏覽

開啟您的職業生涯

完成課程,獲得證書

開始學習
廣告