繁体   English   中英

PHP和MySQLi的num_rows所有的时间?

[英]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 ,可能不是查询本身。 以下是可能的改进:

  1. 索引。 您的表有索引吗? 我建议按ID列创建索引。
  2. 统计。 您分析过表格了吗?
  3. 查看数据库结构。 您可能不需要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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM