2011-05-21 46 views
0

下面的代码是可行的,但它需要很长时间才能运行一段时间的php代码,但它可以很好地与mysql图形工具一起工作(因为它可以等待)。有没有什么方法可以使它更快我在某些列使用索引它是否有任何方法来创建表,如果我创建表,我认为它会提高性能,但这张表必须更新,也许一周一次什么是好的做法建议mysql通过创建新表来提高执行效率

SELECT member.own, member.provincecode, province.PROVINCE_NAME, member.amphurecode, 
    amphur.AMPHUR_NAME, member.Sname, member.Ssurname, member.Hno, member.Moo, 
    member.Sex, member.tambol, member.dateofbirth, member.migratedate, 
    Year(Current_Date()) - Year(member.dateofbirth) AS y, 
    Year(Current_Date()) - Year(member.migratedate) AS m 
FROM member 
LEFT JOIN amphur ON (member.amphurecode 
COLLATE utf8_general_ci = amphur.AMPHUR_CODE) 
LEFT JOIN province ON member.provincecode 
COLLATE utf8_general_ci = province.PROVINCE_CODE 

回答

1

整理是一个昂贵的操作。所以假设member有更多的行比province,尝试整理表行的数量较少:

LEFT JOIN province ON member.provincecode 
= province.PROVINCE_CODE COLLATE <collation of member.provincecode> 

它甚至会更好,让所有的表中的所有列相同的排序规则。