MySQL比like語句更高效的寫法

2021-08-16 04:07:58 字數 1301 閱讀 4810

like語句

select `column` from `table` where `condition` like `%keyword%'

事實上,可以使用

locate(position) 和 instr

這兩個函式來代替

一、locate語句

select `column` from `table` where locate(『keyword』, `condition`)>0

二、或是 locate 的別名 position

position語句

select `column` from `table` where position(『keyword』 in `condition`)

三、instr語句

select `column` from `table` where instr(`condition`, 『keyword』 )>0

locate、position 和 instr 的差別只是引數的位置不同,同時locate 多乙個起始位置的引數外,兩者是一樣的。

mysql> select locate(『bar』, 『foobarbar』,5);

-> 7

速度上這三個比用 like 稍快了一點。

~~~~~~~~~~~~~~~~~~~~~~~華麗的分割線~~~~~~~~~~~~~~~~~~~~~~~~~~~~

四、還要給大家介紹乙個新成員,那就是find_in_set

find_in_set(str1,str2) 函式:返回str2中str1所在的位置索引,其中str2必須以","分割開。 表: mysql> select * from region; +----+-------------+ | id | name       | +----+-------------+ | 1 | name1,nam2 | | 2 | name1      | | 3 | name3  

| | 4 | name2,name4 | | 5 | name3,name5 | +----+-------------+ 5 rows in set (0.00 sec) find_in_set語句 mysql> select * from test where find_in_set('name1',name);

+----+------------+ | id | name  

| +----+------------+ | 1 | name1,nam2 | | 2 | name1  

| +----+------------+ 2 rows in set (0.02 sec) 五、當然,還有mysql的全文索引 全文索引:

Mysql模糊查詢like效率,以及更高效的寫法

在使用msyql進行模糊查詢的時候,很自然的會用到like語句,通常情況下,在資料量小的時候,不容易看出查詢的效率,但在資料量達到百萬級,千萬級的時候,查詢的效率就很容易顯現出來。這個時候查詢的效率就顯得很重要!一般情況下like模糊查詢的寫法為 field已建立索引 selectcolumnfro...

Mysql模糊查詢like效率,以及更高效的寫法

在使用msyql進行模糊查詢的時候,很自然的會用到like語句,通常情況下,在資料量小的時候,不容易看出查詢的效率,但在資料量達到百萬級,千萬級的時候,查詢的效率就很容易顯現出來。這個時候查詢的效率就顯得很重要!一般情況下like模糊查詢的寫法為 field已建立索引 select column f...

Mysql模糊查詢like效率,以及更高效的寫法

在使用msyql進行模糊查詢的時候,很自然的會用到like語句,通常情況下,在資料量小的時候,不容易看出查詢的效率,但在資料量達到百萬級,千萬級的時候,查詢的效率就很容易顯現出來。這個時候查詢的效率就顯得很重要!一般情況下like模糊查詢的寫法為 field已建立索引 select column f...