我需要本地化我的查询结果。要做到这一点,我有:MySql文本本地化
- 该表
Show
,与id
和一些其他信息; - 表
ShowName
与idShow
,name
,lang
(每个显示有多个showName
S其中Show.id
=ShowName.idShow
)
我的查询现在是,并且能够正常运行:
select Show.*,
(SELECT name FROM ShowName
WHERE Show.id=ShowName.idShow
ORDER BY FIELD(lang,'$userPreferredLanguage','en','it','es','fr','de','pt','da','he','pl','nl','hu','no','sl', 'fi','sv','tr','cs','hr', 'el','ru','zh','ja','ko')
LIMIT 0,1) as name,
from Show
现在,问题是:有没有办法加快一点点?查询大约需要3秒,其中2个用于计算内部SELECT
。我尝试了INNER JOIN
,但我无法弄清楚如何省略第二个选择。 PS:请注意,ShowName
可能没有所有的本地化,所以我需要使用FIELD
函数而不是简单的WHERE lang = '$userPreferredLanguage'
。
Thaks提前!
你介意加入你的表结构? 'ORDER BY FIELD'可能是这个需要这么长时间的一个原因。我明白,你可能没有翻译所有语言的所有单词,但是如果你没有丹麦语可用,显示韩语真的有意义吗?通常你有你的默认语言,例如英语,如果您没有使用所需语言的术语,则可以使用英语。 – 2013-04-23 22:28:29