簡體   English   中英

MySQL-最佳索引和最有效的Select語句

[英]MySQL - Best Index and Most Efficient Select Statement

我有一個MySQL表。 它有兩列。 第一個是唯一標識符(INT),第二個是字符串(VARCHAR)。 大約有170萬條記錄。 目前,我正在做的唯一搜索是:

select name from artist_name where name like '$q%'"

我的問題是,放在該表上的最佳索引是什么?如何提高SQL語句的效率(如果有的話)? 在某個時候,我將介紹第二個表,該表將加入第一列,但稍后將解決。

最好在第二列( artist_name )上放置一個索引,以使帶有like子句的搜索查詢可以更快地工作。 無疑,您可以在唯一標識符上添加唯一索引(如果尚不存在)。

此外,您可以考慮將索引作為部分索引,以指定要搜索的藝術家的姓名長度。

查看本文以獲得有關MySql中的索引類型的詳細信息。

SphinxSearch-全文搜索

做這個,

  1. 在mysql提示符下執行此查詢並記錄執行時間,

    SELECT name FROM artist_name WHERE name LIKE'$ q%'“;

  2. 安裝sphinxsearch。

  3. 現在執行如下所示的相同查詢,

    SELECT name FROM artist_name WHERE MATCH('$ q');

您會發現執行時間將大大減少。

我在上面已經給出了高水平的知識。

  1. 要安裝獅身人面像搜索並為當前表列編制索引非常容易,是的,要遵循一系列步驟,但是一旦完成,您將很幸運。
  2. 我在我的應用程序中使用了sphinxsearch,“停用詞”,“單詞形式”,“詞干”等功能使您感覺很好。

其他可用選項:

1. Mysql全文搜索:它也相當不錯,如果您不希望自定義任何內容,則可以通過以下方式使用mysql全文:

ALTER TABLE artist_name ADD FULLTEXT(name);

SELECT * 
FROM artist_name
WHERE MATCH(name) 
AGAINST ($q);

如果您想獲得有關如何安裝獅身人面像搜索的任何幫助,我將在那里。

下次在您的sql查詢中遵循正確的約定,這是STACKOVERFLOW,而不是FACEBOOK。

使用B樹索引

檢查一下

暫無
暫無

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

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