3

我从一个媒体表开始,用于存储一个包含 100 万张图像和 1000 部电影的目录树的基本信息(id、路径、文件名、mime、文件大小、md5 等)。我需要添加一些主要与电影相关的新列(标题、描述、运行时),并且需要查询标题匹配。有 1+ 百万行没有标题,我认为我不应该将其他列添加到“媒体”,因为它会给我 1+ 百万空/空行,它不适用。我有一个media_meta (id, media_id, meta_key, meta_value) 表,它存储杂项信息的序列化值,标题是其中之一,但现在我需要能够仅索引“标题”以进行搜索。我应该添加另一个表media_titles仅使用 media_id,标题上带有索引的标题,例如:

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

我意识到上面的查询还不是最优的,但它仍然是我需要做的事情,即。在标题中搜索子字符串。

表格摘要:

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

1 回答 1

0

如果您在标题搜索中使用通配符作为您在示例查询中所做的那样,那么表格设计实际上是无关紧要的。如果没有某种全文搜索功能,那就是 - 我不太熟悉。

据我所知,当您以通配符开头时,MySQL(或任何 RDBMS)无法使用列上的索引。

于 2012-09-02T02:13:02.640 回答