DB结构:更好的SQL查询?
fid
subid
fieldname
fieldval
要获得创纪录的一个人,我做这样的事情:
$querystr = "
SELECT FN.sub_id, FN.`First Name` , LN.`Last Name` , DOB.`dob` , EMAIL.`email` , PHONE.`phone`
FROM
(SELECT sub_id, field_val AS 'First Name'
FROM $db->data
WHERE `field_name` = 'First Name'
)FN,
( SELECT sub_id, field_val AS 'Last Name'
FROM $db->data
WHERE `field_name` = 'Last Name'
)LN,
(SELECT sub_id, field_val AS `Team`
FROM $db->data
WHERE `field_name` = 'Team'
)TEAM,
(SELECT sub_id, field_val AS `dob`
FROM $db->data
WHERE `field_name` = 'DOB'
)DOB,
(SELECT sub_id, field_val AS `email`
FROM $db->data
WHERE `field_name` = 'EMail'
)EMAIL,
(SELECT sub_id, field_val AS `phone`
FROM $db->data
WHERE `field_name` = 'Telephone'
)PHONE
WHERE FN.sub_id = LN.sub_id
AND LN.sub_id = DOB.sub_id
and DOB.sub_id = EMAIL.sub_id
and EMAIL.sub_id = PHONE.sub_id
ORDER BY LN.`Last Name`
";
如何简化这有什么建议?
我以前见过这种模式。容易添加“字段”,因为它们从来不存在,但由于需要“伪造”记录,查询速度很慢。你哪一个做更多?查询或添加字段?这应该推动你的优化。 – n8wrl 2009-06-16 15:55:59