0

如何在最少的处理时间内获得分页的总行数?

我在产品列表中选择 SQL 太复杂,无法在分页中显示总页数。我必须查询没有限制参数的 SQL,这需要花费太多时间来处理。有没有更好的方法来获取总记录?

这是我的 SQL:

SELECT DISTINCT
    p.products_model,
    p.products_image,
    pd.products_name,
    p.products_quantity,
    p.products_id,
    p.products_type,
    p.master_categories_id,
    p.manufacturers_id,
    p.products_price,
    products_price_market,
    p.products_tax_class_id,
    pd.products_description,

IF (pbs.products_id, 1, 0) pdsid,

IF (
    s. STATUS = 1,
    s.specials_new_products_price,
    NULL
) AS specials_new_products_price,

IF (
    s. STATUS = 1,
    s.specials_new_products_price,
    p.products_price
) AS final_price,
 p.products_sort_order,
 p.product_is_call,
 p.product_is_always_free_shipping,
 p.products_qty_box_status,
 p.products_recommend,
 p.products_in_stock
FROM
    jy_products_description pd,
    jy_products p
LEFT JOIN jy_products_best_selling pbs ON p.products_id = pbs.products_id
AND pbs.category_id = 77,
 jy_products_to_categories p2c
LEFT JOIN jy_specials s ON p2c.products_id = s.products_id
AND s. STATUS = 1,
 jy_products_attributes pa0
WHERE
    p.products_status = 1
AND p.products_quantity > 0
AND p.products_id = p2c.products_id
AND pd.products_id = p2c.products_id
AND p.products_id = pa0.products_id
AND pd.language_id = 1
AND p2c.categories_id = 77
ORDER BY
    pdsid DESC,
    pbs.sort_by ASC,
    p.products_ordered

在此处输入图像描述

4

1 回答 1

2

首次使用

SELECT *
FROM table
WHERE
STATUS = 1 AND
catagory = 100
HAVING
quantity > 0
ORDER BY
sort ASC

这将使用 PDO 获得完整的查询,您只需计算总金额即可。将它存储在 Session 中,然后最后使用它。

SELECT *
FROM table
WHERE
STATUS = 1 AND
catagory = 100
HAVING
quantity > 0
ORDER BY
sort ASC
LIMIT #, #

结合您的总计数,您可以将计数除以您在页面上显示的项目数。然后,您可以使用它来确定页数。当然是围观。然后只需在第一次运行时存储在会话中的每个 paganation 上使用 go 来限制数量,这样你就不会经常杀死你的调用。

于 2013-07-09T04:02:38.487 回答