我开始使用媒体表来存储基本信息(id,路径,文件名,mime,filesize,md5等等),用于表示100万张图像和1,000部电影的目录树。我需要添加一些主要与电影相关的新列(标题,描述,运行时),并且需要查询标题匹配。有超过100万行没有标题,我认为我不应该在“媒体”中添加额外的列,因为它会给我100万个空/空行,但不适用。我有一个 media_meta (id,media_id,meta_key,meta_value)表,它存储了杂项信息的序列化值,title是其中之一但是现在我需要能够仅为'title'索引搜索。我应该添加另一个表 media_titles ,只有media_id,标题带有标题索引,用于以下查询:
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 :(得分:0)
如果您在标题搜索中使用通配符,那么表格设计几乎无关紧要,就像您在示例查询中所做的那样。如果没有某种全文搜索功能,那就是 - 我不太熟悉。
据我所知,当您使用通配符时,MySQL(或任何RDBMS)无法使用列上的索引。