2012-09-02 138 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