我正在开发一个 Web 应用程序,让用户可以在数据库中搜索项目。这些项目分为几个类别。返回的每个搜索项根据其字段值以不同方式显示。目前我建立了一个类来处理显示和另一个来处理搜索。搜索类使用多个用户输入构建 SQL 查询,在数据库中查询与用户输入匹配的项目的 ID,并将数组中的 ID 发送到显示类。
执行此操作的代码摘录:
//the sql query is actually a little more complex than this
$query = "SELECT items.id FROM items, subcategories WHERE {$name} AND items.`base_school` = '{$_SESSION['base_school']}' AND items.subcategory = subcategories.id AND subcategories.parent_category = {$search_category} ORDER BY `time_added` DESC {$limit}";
$result = $DB_CONNECTION->query($query);
$newly_added = array();
while (list($id) = $result->fetch_row()) $result[] = $id;
searchDisplay::print_result($result);
显示类一个接一个地查询数据库以获取每个项目的完整详细信息,并将其显示为应显示的内容。
我的问题是在第一次查询数据库并将数据存储在数组中然后将该数组传递给显示类而不是让显示类使用项目的唯一 ID 查询每个项目的数据库?我目前的解决方案目前运行良好,但我需要知道当数据库开始增长(大约 500,000 行)时我的方法是否会出现问题。
其次,使用用户提供的几个搜索条件过滤来自数据库的数据。构建一个包含几个连接以适应所有用户条件的复杂查询,还是编写一个适应主要过滤器的简单查询,然后使用 PHP 过滤与搜索条件不匹配的少数剩余结果会更好吗?