2012-06-16 373 views
-2

我有一个圣经项目,我需要一些专家的意见,以确定在页面中显示结果的速度更快,效率更高。哪种编码更高效?

我的圣经表目前只包含3个字段? id,verse_code和verse_content。

对于我来说,能够以显示相应的圣经书和诗句字(前创1:1),我就verse_code包括66箱子像这样的switch-case语句......

select (verse_code) 
{ 
case 1: echo "Genesis"; 
case 2: echo "Exodus"; 
... 
case 66: echo "Revelation"; 
} 

我可以保持这种方式,或者我可以添加新列book_name和每个对应的诗句的输入书名。这将相当于31,103行。

性能明智,在这两种方法之间更快。我应该保留我的案例陈述,我应该输入31,103行的书名吗?

测试代码在这里。 http://sandbox.littlegraffyx.com/bible/test.html使用它,尝试输入Gen x:x,其中x是书的章节和诗歌以及前3个字母。示例:创1:1或外切2:2

文本框位于左下角

感谢

+6

使用数组代替开关盒。 – nhahtdh

+2

同时尝试。计时。 –

+0

你在用什么语言? – twaddington

回答

1

最好是使用一个查找表的查询,你正在做往返于数据库反正和数据库连接这样的数据就是它的设计:

CREATE TABLE verses (verse_id INT PRIMARY KEY AUTO_INCREMENT,book_id INT NOT NULL, chapter INT NOT NULL,verse INT NOT NULL, verse_content TEXT NOT NULL, FOREIGN KEY(book_id) REFERENCES books(book_id)) ENGINE = InnoDB; 

CREATE TABLE books(book_id INT PRIMARY KEY AUTO_INCREMENT,book_name VARCHAR(100)) ENGINE = InnoDB; 
你看到作为 foreign key图书(所以你一定能连到book_id场的诗句表

这里一本现有的书),你可以从此使用查询join来自诗集的数据以及书籍中的book_name。

然后,您可以与指定书籍book_id一定是你在经文找到一个和您的查询就会自动返回正确的书名查询条件查找。

SELECT book_name,chapter,verse,verse_content FROM verses,books WHERE books.book_id = verses.book_id; 

Joins是那些伟大的SQL概念,真正使您的掌握在你的数据之一,这blog post杰夫·阿特伍德会给你一个很好的和明确的想法是什么,他们可能对你意味着什么。我真的建议你看看它。 :)

作为一个额外的好处,因为您可能不是仅仅为了自己的用途而编写这些代码,所以通过将代码中的可视化数据放入数据库中,可以将这个方面(数据输入和数据校正)给可能完全不知道(底层)编码的其他人。

您是否希望人们不得不改变源代码,如果您输入错字并将其命名为Potter而不是Peter,或者为它们提供远离代码的良好界面以允许它们将其更改为Peter ?

它也允许你通过使它们不会相互或与您的代码干扰所有插入的数据分布在更多人的工作。