餐桌访问;
字段[id,patient_id(fk),doctor_id(fk),flag(Xfk),type(Xfk),time_booked,日期,...]
Xfk = 它指的是其他表,但它不是必须存在的,所以我不使用约束。
SELECT `v`.`date`, `v`.`time_booked`, `v`.`stats`, `p`.`name` as pt_name,
`d`.`name` as dr_name, `f`.`name` as flag_name, `f`.`color` as flag_color,
`vt`.`name` as type, `vt`.`color` as type_color
FROM (`visits` v, `users` p, `users` d, `flags` f, `visit_types` vt)
WHERE `p`.`id`=`v`.`patient_id`
AND `d`.`id`=`v`.`doctor_id`
AND `v`.`flag`=`f`.`id`
AND `v`.`type`=`vt`.`id`
AND `v`.`date` >= '2013-02-27'
AND (v.date <= DATE_ADD('2013-02-27', INTERVAL 7 DAY))
AND (`v`.`doctor_id`='00002' OR `v`.`doctor_id`='00001')
ORDER BY `v`.`date` ASC, `v`.`time_booked` ASC;
我有一个大数据!我的问题是,
1:我应该考虑使用联接而不是选择多个表吗?如果我应该为什么?
这个查询执行时间是 0.0009,所以我认为它很好,因为我在一个查询中获取了所有数据,或者这是不好的做法?
2:在选择部分我想说
如果 v.type != 0select f.name,f.color
否则我不想在任何表格flags f
中选择它们,这可能吗?
目前,如果未找到标志,它会复制所有行,就像标志表在行中的一样多!有什么办法可以防止这种情况吗?标志和访问类型表?