好的,首先让我告诉一下我想要做的事情。基本上,在我的学习期间,我用PHP编写了一个小型Web服务,根据长度,演员,导演,作家,流派等一些可测量的尺寸计算相似电影之间的相似程度。我用于此的数据基本上是一组数据从omdbapi.com获得。MySQL JOIN vs LIKE - 更快的选择?
我还有那个数据库,但它在技术上只是一个包含所有到每部电影的信息的单表。这意味着,对于每部电影,上述所有参数均以逗号分隔。因此,我迄今使用了一个使用LIKE语句封装所有这些东西的查询。该查询可能会变得非常大,因为我几乎会查询表中的每个参数,有时针对不同演员的5个不同的LIKE语句,对于导演和作者而言也是如此。当我上次使用此功能时,大约需要30到60秒才能输入一部电影并收到15个类似电影的列表。
现在我开始了自己的第一份工作,并在自由时间自学自我,我想在自己的网站上工作。因为我没有真正的想法来处理我想要做的事情,所以我想我会再次拿出我的老电影发现者,并且这次使用它。 现在要挑战自己,我希望整个事情变得更快。了解,数据从未改变,只能阅读。这也不是“真正”的关系,因为演员的名字和其他只是字符串,并没有其他地方真正的进入。这意味着具有相同的名字将被视为同一个演员。
现在,这里是我的实际问题: 假设我想我的选择查询更快地运行,这将是有意义的运行,其将逗号分隔字符串成额外的表脚本(这些是n到m的关系,看到的尝试下面),然后加入所有这些表(他们将是8或更多),或将使用LIKE,因为我目前的速度相同?我试图实现的唯一的事情是更快的选择查询,因为没有其他任何事情可以处理数据。
这是我现在有。请记住,我仍然必须为电影+每个表格之间的关系创建表格。这样做后,我可以删除电影表中的列,并最终不得不通过每个查询加入很多表格。我在这里可以看到的唯一真正的好处是,在个人表格上创建索引会比较容易,而不是一个(或几个)索引,以覆盖大型电影表格。
我希望所有这些都对你有意义。我很欣赏任何短或长的答案,就像我说的这主要是为了自学,因此我不需要一个真正的商业模式。
阅读问题:** [在数据库列中存储分隔列表真的很糟糕吗?](http://stackoverflow.com/questions/3653462/is-storing-a-delimited-list-in-a -database-column-really-that-bad)**简短回答:**是的,这真的很糟糕。** – 2014-12-02 21:38:13