性能PHP选择vs左连接的位置

时间:2015-07-03 20:34:51

标签: php mysql performance database-design left-join

我为多语言图书馆cms工作。对于DBs设计我有两个想法:

一:

id | title | desc | date | writer | publisher | lang | more more | ...

结果:

result = SELECT blah1, blah2, foreign_key FROM foo WHERE key=bar AND lang = en

二:为语言添加另一个表:

id | book_id | lang 

使用PHP LEFT JOIN方法进行结果处理。

对于大型数据库哪种方式更好更快?!

注意:I have 27 columns in my table and 4500 books.

1 个答案:

答案 0 :(得分:0)

由于每本书只有一种语言,您只需要book表中的一个language_id列,该列引用语言表。语言表将包含所有语言的列表。

books:
id | title | ... | language_id

languages:
id | name | code

例如:

books:
id | title | language_id
1 | Othello | 1
2 | The Bible | 1
3 | Les Misérables | 2

languages:
id | name | code
1 | english | en
2 | french | fr

然后,您可以在books.language_id = languages.id

上选择左联接的书籍

这种方式的另一个好处是能够通过选择语言表的内容轻松列出所有语言。