簡體   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