我是否有太多的查询表查询,有人可以提出替代方案吗?

时间:2011-04-21 20:43:43

标签: php mysql codeigniter

我目前正在构建一个处理特定类型哺乳动物的codeigniter应用程序。当用户添加新记录(哺乳动物)时,会给出“品种类型”,“性别”等列表。这些列表存储在单独的数据库表中。

目前,为了获得这些,我有单独的功能,例如:

$this->Mammal->get_list_of_breeds()
$this->Mammal->get_list_of_genders()

每个调用一个查询,最多可能有7或8个不同的查找供我查询。有谁知道这是否会显着减慢我的应用程序或导致对数据库的过多查询。在大多数情况下,任何单个表中的最大记录数都不到300条记录。

通过将查询合并到一个函数中并使用php来拆分查找字段,我有更好的方法吗?

非常感谢任何想法或想法。

2 个答案:

答案 0 :(得分:1)

一个想法是采用一些较小的选项集并将它们放在数组中,特别是如果用户无法更改它们。例如,性别可能只是一个阵列。据我所知,只有两种选择。如果有任何其他类似的选项集,你也可以制作这些数组。

但是,即使300条记录也不是大量的数据。我认为你不是在构建下一个Facebook,所以只需做几个干净的查询来获得你需要的选项可能不会有什么大不了的。

就个人而言,我不会把它全部放在一张桌子里。大型通用表似乎有点笨拙,你仍然会得到相同数量的数据。您可以使用单独的表并通过UNIONing查询完成相同的操作。

答案 1 :(得分:0)

正如你自己评论的那样,确实你应该把所有东西都放在一张桌子里......

所以你有一张叫哺乳动物的桌子

然后你会有这些领域:性别,品种等......

现在,在php中编程时要轻松得多,因为现在你可以执行一个查询,然后显示所有内容,如下所示:

$query="SELECT * FROM `mammals`";
$query_exec=mysql_query($query);

while($result=mysql_fetch_array($query_exec))
{
print "gender: ".$result['gender']." breed: ".$result['breed'];
}

小解释: 查询从称为哺乳动物的表中获取所有内容 然后只要数组中仍有结果,while就会继续 fetch数组将数据放入变量中,每个字段都可以通过$ result []

读取

我知道这不是一个非常明确的解释,但我的想法也不是这个晚些时候的清理:/