好的 - 在这里需要一些帮助 - 可能比我在这里咀嚼更多 - 但是我想写一个总是返回最少10个结果的SQL查询。如果应用第一个条件且结果集超过10个结果,则继续进行下一个条件等。
实施例 找到所有价格低于5.00英镑的小型红色塑料玩具车。
我总是希望在屏幕上显示至少10个项目。想要搜索“小”然后搜索“红色”,然后搜索“< £5.00” 。如果查询返回超过10个项目,则继续过滤尽可能多的标签(即塑料,玩具和汽车) - 它可以使得匹配得越多(即,如果产品具有与之关联的所有3个标签)它 - 它将位于列表的顶部,如果产品只匹配1个标签 - 那么这将低于列表。
Price Table
ID Price
1 £1.50
2 £2.50
3 £6.00
.
Colour Table
ID Colour
1 Red
2 Blue
3 Yellow
.
Size Table
ID Shape
1 Small
2 Medium
3 Large
.
Products Table
ID Description price_id colour_id size_id
1 Item 1 1 2 2
2 Item 2 2 2 1
3 Item 3 1 1 1
4 Item 4 3 2 3
5 Item 5 3 1 2
6 Item 6 1 1 2
7 Item 7 1 1 3
.
Tags Table
ID Description
1 Shiny
2 Plastic
3 Wood
4 Toy
5 Disney
6 Animal
7 Car
.
Items_Tags Table
ID tag_id product_id
1 1 1
2 4 1
3 7 1
4 2 2
5 3 3
6 4 3
7 7 6
8 7 7
9 7 2
相当长的例子 - 但我希望你明白这一点。我想知道将所有过滤器放在标签表中是否有任何好处 - 即价格,颜色和大小,然后只需要搜索标签表。
任何想法?
由于
答案 0 :(得分:1)
这取决于你的用法:过滤整数比字符串快(顺便说一下,它们是否被编入索引?)但是JOIN也很耗时。因此,如果sql外部的代码使用整数,请保留它们(如果不需要显示文本,则不要加入)