【问题标题】:Separate SQL queries per word for dynamic pages?动态页面的每个单词的单独 SQL 查询?
【发布时间】:2011-06-07 13:54:33
【问题描述】:

我正在为动态站点 9ocial 网络创建多语言页面),因此所有页面文本都是数据库驱动的。问题是,如果页面上的不同位置有 100 个不同的单词,这是否意味着我需要为每个工作包含 1000 个选择 SQL 语句才能从数据库中读取它?我从来没有使用过多语言动态页面,只是纯硬编码的英文页面,这很容易,所以不确定。有页面标题栏、页面元数据、页面文本、菜单标签、页脚等内容,所以我假设每个都是单独的 sql 查询来提取单词?

【问题讨论】:

  • 对于某些事情,您可能正在考虑使用资源文件并为每个区域设置一个。你用的是什么编程语言?

标签: sql database dynamic multilingual


【解决方案1】:

不一定每个项目都有一个 SELECT 语句。如果您的架构在同一个表中有相关​​项目,则可以在一次调用中返回这些项目。 [例如。对你的表结构做一些假设]

SELECT page_title, page_text, page_footer, page_blah 
FROM page_table
WHERE page_id = 123 AND lang = 'FR'

对于您的收藏(一对多)项目,例如页面元数据,您可以考虑使用视图、数据透视和/或联合来进一步减少调用次数(或者如果性能/可维护性还可以,则使用更多的调用次数)。要知道视图等是否合适,您应该发布您的架构的更多详细信息。 hth,R

【讨论】:

  • 如果我理解正确,视图只是为了让查询看起来不错。但它仍然必须做与非视图查询相同的工作,那么在性能方面有什么好处呢?我没有为页面文本/多语言定义的模式,因此现在就这样做了。但对于多语言,它是 std key_id, key, lang_id
  • 当然,视图不会比非视图查询带来性能优势。我认为它是一种选择,可以通过使用更复杂的查询来摆脱大量冗长的 SELECT 语句的方法,即性能提升来自于总体上更少的调用。然后,视图可以为此提供更可维护、可重用的实现。而且它们看起来也很漂亮。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-18
  • 2019-01-12
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多