簡體   English   中英

MySQL中的搜索查詢優化

[英]Search query optimization in mysql

我正在搜索查詢。 我的桌子上有一個字符串“ thomas alva edison”。 如果用戶搜索,我想顯示此字符串,

托馬斯·阿爾瓦·愛迪生,托馬斯·阿爾瓦,愛迪生,托馬斯·阿爾瓦,托馬斯·愛迪生等

但不是

tho,son,alv等

我所做的是

select name from tbl_names where name like "."'%".$key."%'

如何修改此查詢以獲得正確的結果。

我建議在查詢中使用REGEXP進行單詞搜索,

查詢應類似於:

SELECT name FROM `tbl_names` WHERE `name` REGEXP '[[:<:]]thomas[[:>:]]'

希望這對您有用。 有關更多詳細信息,請選中此復選框

MySQL提供了一種實現少量搜索的絕妙方式(全文搜索)。 http://viralpatel.net/blogs/full-text-search-using-mysql-full-text-search-capabilities/

例如:

select name from tbl_names WHERE MATCH (name) AGAINST ('thomas');

在全文搜索中,我們有很多選擇,而只有MySQL 5.6 MYISAM引擎少。

您也可以嘗試如下操作:

$sql = "select name from tbl_names where ";
$array = explode(" ",$key);
$or = "";
foreach($array as $word) {
  if(strlen(trim($word))>0) {
    $sql.= $or."(name like '%".$word."%')";
    $or = " OR ";
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM