转贴:PHP数据库方面的面试题

fxs_2008 2010-12-03 01:06:31
转贴一下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
...全文
152 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
沪php攻城师 2010-12-03
  • 打赏
  • 举报
回复
四 读多写少

在第一个表里加一个字段产品总数
每次单位有增减产品的时候更新该字段
fxs_2008 2010-12-03
  • 打赏
  • 举报
回复
一 是数据量:20万*300万

二 如果求要求一定浏览量和并发(如京东这样的电子商务)

三 要求有count(分页)

四 读多写少

五 联表查询还是分散查询

考题强调了一个执行效率。这个数据量的规模是中型商务网站的规模。

如果是DBA,这个该如何建议?
mysqldbd 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 fxs_2008 的回复:]
转贴一下php里的贴子,各位大侠给看看

有2个表,
works,单位名称表,表结构如下
works_id int(10) primary key #单位ID
works_name varchar(10) #单位名称
works_address varchar(10) #单位所在省份
此表约20万条记录

product,单位的产品表,表结构如下
product_id int(……
[/Quote]

总的来说,先要加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上加冗余字段了。
mysqldbd 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 fxs_2008 的回复:]
转贴一下php里的贴子,各位大侠给看看

有2个表,
works,单位名称表,表结构如下
works_id int(10) primary key #单位ID
works_name varchar(10) #单位名称
works_address varchar(10) #单位所在省份
此表约20万条记录

product,单位的产品表,表结构如下
product_id int(……
[/Quote]

思路是 如何写高效的sql吗?还是别的?
ACMAIN_CHM 2010-12-03
  • 打赏
  • 举报
回复
没什么好办法,确保 product_works , works_address上创建索引。

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧