1
1
我假设您这样做是因为希望“显示与“tag”查询相关的前n个标记”非常快。 如果您在数据库中这样做,那么第二种方法是最好的。甚至可以考虑创建一个索引,该索引在标记字段上升序,在相关的标记计数字段上降序。 但如果您真的想要速度,可以考虑将其表示为内存中的数据结构。 |
2
1
我认为,如果您有一个带有正确/巧妙索引的“分配给任务X的标记”表,那么使用连接查找选项1)中描述的标记不会花费那么长时间。这将是最有活力的方法。 选项2将为您提供执行“标记X通常与标记Y和Z一起使用”查询的方法,并且可以在创建新任务时静态填充,但是,例如,在添加或从任务中删除标记时,需要更大的效率。这对于方法1来说是自动的)。 方法2)会(如您所描述的)不允许您 确切地 当前任务的相关标记,因为您没有存储任务ID。但是,如果您这样做了,您将与方法1处于同一点上)。 |
3
1
我假设您使用单独的表(仅任务ID、标记ID)表示任务标记关系,因此您描述的第一个选项是使用任务标记关系表从任务表到标记表的“简单”联接。我担心我的SQL知识已经枯竭了一点,所以我不相信自己会给您提供关于它所需要的内部/外部/左/右联接的确切类型的建议,也不相信通过适当的索引构建等,您可以从中获得什么样的性能。试试看,这可能是最好的办法…SQL语句可以使用Visual Studio/Access/或者其他方法生成。 如果您希望数据库中有许多项,那么我假设您的第二种方法更快。但是,我绝对建议您做适当的性能测试来确定这一点,而不是猜测。无论哪种方法,您都可以通过只存储一个标记标记对(例如,DB2 PHP,而不是PHP-DB2)来消除这种重复性。例如,可以通过按ID排序来确定要存储哪一个,这样您总是先用ID最小的标记来存储它们。 我还想,您的第一个选项开始的速度更快,这样您就可以开始使用它,然后在您有时间使用第二个选项,或者一旦它成为性能问题。 |
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
Manny · 如何比较Perl中的字符串? 2 年前 |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |