使用萬用字元(%%)改善 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)
廣告