[英]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中的索引類型的詳細信息。
做這個,
在mysql提示符下執行此查詢並記錄執行時間,
SELECT name FROM artist_name WHERE name LIKE'$ q%'“;
安裝sphinxsearch。
現在執行如下所示的相同查詢,
SELECT name FROM artist_name WHERE MATCH('$ q');
您會發現執行時間將大大減少。
我在上面已經給出了高水平的知識。
其他可用選項:
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.