2012-09-02 32 views
3

我以media表開始,爲表示一百萬圖像和1,000電影的目錄樹存儲基本信息(id,路徑,文件名,mime,filesize,md5等) 。我需要添加幾個主要與電影有關的新列(標題,說明,運行時),並且需要查詢標題匹配。有超過100萬行沒有標題,我認爲我不應該將額外的列添加到'媒體',因爲它會給我1百萬空/空行不適用。我有一個media_meta(id,media_id,meta_key,meta_value)表,其中存儲雜項信息的序列化值,標題是其中之一,但現在我需要能夠索引'標題'進行搜索。我要補充另一個表media_titles只media_id,對標題的指數,像查詢標題:關於MySQL表設計模式的建議

SELECT * FROM media_titles WHERE title LIKE '%title%';

我意識到上面的查詢是不是最優的呢,但還是它的東西我你需要做的,即。在標題中搜索一個子字符串。

TABLES總結:如果你與你的標題搜索通配符導致你在你的樣本查詢做了

media (id, path, filename, filesize, mime, md5, etc...) 
media_meta (id, media_id, meta_key, meta_value) 
media_titles (media_id, title) 

回答

0

表的設計實際上是無關緊要的。如果沒有某種全文搜索功能,那我就不太熟悉了。

就我所知,MySQL(或任何RDBMS)無法在您使用通配符引導時使用列上的索引。

+0

是的,我在發佈後想到了這個問題,並尋找替代解決方案來查詢子字符串的標題。這是必要的,但不知道我將如何解決它。 – Poe

+0

此功能可以使用嗎? http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html – gangreen