[英]php and mysqli num_rows all the time?
我公司有一个很大的网站,销售各种产品。
因此,例如,这里的一种产品的评论数为+1000,而销量超过+4000。
我们在mysql中的Sell表具有超过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是一个好的做法吗?
可能不是导致速度缓慢的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
值,该值是返回的行数。
$ results = $ mysqli-> query(“ SELECT count(*)as num FROM sell where id ='$ id'”);
读完您的问题后,我认为您正在处理庞大的数据库。 我更喜欢您使用数据表,其中有一个称为Serveside的选项:true使用数据表,您将可以轻松处理大量数据(这对于您将来的目的也是您公司的网站而言)。我们的客户网站之一,其结果简直令人难以置信,您可以通过使用限制来增加数据的计数和列表,这些限制不会给您的DATABASE造成太大的负担。请尝试使用链接数据表中的示例
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.