我公司有一个大网站,销售各种产品。
因此,例如,这里的一个产品有+1000条评论,售价超过+4000。
我们在mysql中的卖表有超过1.000.000行的销售产品。
所以我们这样做:
$results = $mysqli->query("SELECT id, product_code, product_desc, price FROM sell where id='$id'");
之后获得所有这些产品的num_rows。
同样获得此产品评论,产品喜欢,标记......
我们的网站很慢。
我的问题是,所有num_rows都可能导致这个问题?我们应该不是一直在做num_rows,只需创建一个表来增加每个卖出的数量,评论......然后得到这个值?
换句话说,在这种情况下,这个num_rows是否是一个好习惯?
答案 0 :(得分:0)
可能不是引起缓慢的NUM_ROWS
,可能是查询本身。
以下是可能的改进:
- 指标的影响。你的表有索引吗?我建议按ID列创建一个索引。
- 统计。你有桌子分析了吗?
- 查看数据库结构。您可能不需要SELL表中的产品说明。产品ID可能就足够了。如果从表中删除不必要的列,它将更轻,性能更好。
醇>
UPD:您可以像这样重写查询以获得结果中的值:
SELECT id, product_code, product_desc, price, count(*) as cnt
FROM sell where id='$id'
GROUP BY id, product_code, product_desc, price
并且您将获得cnt
值,这是返回的行数。
答案 1 :(得分:0)
$ results = $ mysqli-> query(“SELECT count(*)as num FROM sell where id ='$ id'”);
答案 2 :(得分:0)
在阅读了您的问题后,我认为您正在处理庞大的数据库。 我更喜欢你使用datatable,你有一个名为Serveside的选项:true 使用数据表,您将能够非常轻松地处理大量数据(这也是为了您公司网站的未来目的)我个人将其实现到我们的客户网站之一,结果很棒,您可以带来数量并使用限制来列出数据,这些限制不会对DATABASE产生太大影响 请点击链接Data tables
中的示例