[英]mysql optimisation number of ads in a category
我有一個個人廣告網站。
第一個問題:我有 2 個表格, category
和ads
。
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.