我有一个products表,还有一个categories表,一个product可能会属于多个category,所以这两个表之间是用joint table连起来的。
现在我有一个请求
SELECT products
.* FROM products
INNER JOIN categories_products
ON categories_products
.product_id = products
.id INNER JOIN categories
ON categories
.id = categories_products
.categories_id WHERE (product_state = 'onsale' AND featured = '1' AND categories_products.categories_id = '14') ORDER BY products.created_at DESC
这里用到的查询条件有:
products表中的:
product_state
featured
categories表中的有:
categories_id
还要按照
products.created_at降序
请问这样的请求,我想要请求时间最少,应该怎么设计索引?我的SQL语句有哪些地方可以修改?谢谢!
另外我想加limit的,因为我只需要查询到的前15个,但是我同时还想知道符合条件的所有products的数量,请问这个怎么获取?