簡體   English   中英

mysql 優化一個類別的廣告數量

[英]mysql optimisation number of ads in a category

我有一個個人廣告網站。

第一個問題:我有 2 個表格, categoryads

Category表( id為主鍵)

| id  | type        | subtype   | pos    |
+-----+-------------+-----------+--------+
| 1   | sell        |           | 1      |
| 2   | jobs        |           | 2      |
| 3   | dating      |           | 3      |
| 4   | dating      | boys      | 1      |
| 5   | dating      | girls     | 2      |
| 6   | sell        | cars      | 1      |
| 7   | jobs        | teacher   | 1      |

Ads表( id是主鍵) - 這個表有很多廣告

| id  | title       | type      | subtype|
+-----+-------------+-----------+--------+
| 1   | some text   | sell      | cars   |
| 2   | some text   | dating    | girls  |
| 3   | some text   | dating    | boys   |

我想閱讀所有類別類型並獲取該類型的廣告總數,我還需要獲取子類型。

我頁面上的 output 將是一些東西

Sell (1 ads)
   Cars

Jobs (0 ads)
   Teacher

Dating (2 ads)
  Boys
  Girls

我目前正在做的是使用 php 和 mysql 進行 3 個查詢,其中第一個返回的類別類型是 select,其中 subtype="",我在每個廣告中的第三個類別和第二個類別給出了每個廣告的子類型想優化mysql,減少查詢次數,速度更快,即使是換表和增加索引

Select 查詢:

select * 
from category  
where subtype = '' 
order by pos desc

計算類型上的廣告數量:

select type 
from ads 
where type = '$type_name'

Select 亞型:

select * 
from category  
where type = '$type_name' 
  and subtype !='' 
order by pos

你可以用這個

SELECT c.*,a.c_ads
FROM
category c LEFT JOIN ( SELECT COUNt(type) c_ads,type FROM ads GROUP BY type) a
ON c.type = a.type
ORDER BY c.type,c.pos DESC
 編號 | 類型 | 亞型 | 位置 |  c_ads -: |:----- |:------ |  --: |  ----: 3 | 約會 |  |  3 |  2 5 | 約會 | 女孩| 高分辨率照片| CLIPARTO  2 |  2 4 | 約會 | 男孩| 高分辨率照片| CLIPARTO  1 |  2 2 | 職位 |  |  2 |  null 5 | 職位 | 老師 |  1 |  null 1 | 賣|  |  1 |  1 5 | 賣| 汽車 |  1 |  1

見小提琴

當你得到php中的數據時,逐行檢查,如果類型發生變化,那么你可以使用列c_ads來顯示($row{'c_ads'] ads)和row['type']來顯示文本類別

在 row['type'] 沒有改變的地方,您可以在 row['subtype'] 中找到 row['type'] 的子類別

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM