我有一个“项目”表和一个“项目关键字”表。当用户搜索关键字时,我想给他一页结果加上结果总数。
我目前正在做的是(对于搜索“ab c”的用户:
SELECT DISTINCT {fields I want} FROM itemkeywords JOIN items
WHERE (keyword = 'a' or keyword='b' or keyword='c'
ORDER BY "my magic criteria"
LIMIT 20.10
然后我用计数做同样的查询
SELECT COUNT(*) FROM itemkeywords JOIN items
WHERE (keyword = 'a' or keyword='b' or keyword='c'
这可能会得到一张相当大的桌子,我认为这个解决方案非常糟糕......
但我想不出更好的办法。
避免命中 MySQL 两次的明显替代方法,即只执行第一个查询,没有 LIMIT 子句,然后导航到正确的记录以显示相应的页面,然后到记录集的末尾以计算结果似乎更糟糕...
有任何想法吗?
注意:我使用的是 ASP.Net 和 MySQL,而不是 PHP