转贴一下php里的贴子,各位大侠给看看有2个表,
works,单位名称表,表结构如下
works_id int(10) primary key #单位ID
works_name varchar(10) #单位名称
works_address varchar(10) #单位所在省份
此表约20万条记录product,单位的产品表,表结构如下
product_id int(10) primary key #表ID
product_works int(10) #单位ID
product_name varchar(100) #单一产品名称
此表约300万条记录
两个表通过单位ID来关联
一、在考虑程序执行效率的前提下,现在需要做如下输出,每页50条记录例如:
序号 单位名称 产品总数
1 中国移动 共计3款产品
2 奇瑞汽车 共计10款产品
3 联合利华 共计22款产品二、求省份是'北京'的记录,其他条件不变
请问各位达人有什么好的思路么原贴:
http://topic.csdn.net/u/20101202/22/47926f7b-7a13-4bf0-91cf-8738ff10667a.html?seed=1032264418&r=70319483#r_70319483
works,单位名称表,表结构如下
works_id int(10) primary key #单位ID
works_name varchar(10) #单位名称
works_address varchar(10) #单位所在省份
此表约20万条记录product,单位的产品表,表结构如下
product_id int(10) primary key #表ID
product_works int(10) #单位ID
product_name varchar(100) #单一产品名称
此表约300万条记录
两个表通过单位ID来关联
一、在考虑程序执行效率的前提下,现在需要做如下输出,每页50条记录例如:
序号 单位名称 产品总数
1 中国移动 共计3款产品
2 奇瑞汽车 共计10款产品
3 联合利华 共计22款产品二、求省份是'北京'的记录,其他条件不变
请问各位达人有什么好的思路么原贴:
http://topic.csdn.net/u/20101202/22/47926f7b-7a13-4bf0-91cf-8738ff10667a.html?seed=1032264418&r=70319483#r_70319483
思路是 如何写高效的sql吗?还是别的?
总的来说,先要加2个索引:
(1)works,单位名称表上为字段product_name、works_id建一个联合索引。
(2)product,单位的产品表上为product_works字段加索引。1,先在表 product上,通过product_works(单位id)分组,求出单位产品数,然后再关联works表,求出单位名称。
select w.works_name, a.num
from( select produmct_works , count(1) num from product ) a, works w
where a.produmct_works = w.works_id;
-- 不知道mysql里面的伪列数字1、2、3.....如何取得?2,跟第一个类似,不过加了一个条件而已。
select w.works_name, a.num
from( select produmct_works , count(1) num from product ) a, works w
where a.produmct_works = w.works_id and w.works_address='北京';
最后,如果还是不行的话,就在product上加冗余字段了。