【发布时间】:2013-11-05 20:33:55
【问题描述】:
这是我的数据库结构示例,我想知道创建搜索功能的最佳和最快的方法。
orders_users 表:
id || order_id || title || first_name || last_name || email || telephone
orders_details 表:
id || transaction_id || date_time || status
目前我执行以下查询:
SELECT * FROM orders_users WHERE last_name = '%QUERY%'
在此之后,我对第一个查询的结果执行 PHP foreach 以从第二个表中查询 date_time 和 status。 (这是我的搜索结果页面所必需的)
SELECT * FROM orders_details WHERE id = '%ORDER_ID FROM FIRST QUERY%'
这对于不常见的名字来说很好,但如果我在大约 80k 行上搜索“smith”,速度会很慢。
我想到的唯一另一种方法是用可搜索的列和结果填充一个单独的表,这只需要一个查询,如下所示:
id || order_id || last_name || date_time || status
如果可能的话,我不想走这条路,因为我真的不想用相同的数据更新多个表。
我确定我的头脑没有直接考虑这个问题,我只是需要一些指导。
【问题讨论】:
-
这看起来像是 JOIN 的工作
-
@SamHuckaby 我同意。这些表是否应该是关系数据库的一部分?如果是这样,这是否意味着他们共享一个共同的
id列,或者? -
您是否考虑过为常用列编制索引?
-
哇!非常感谢您的快速回复,JOIN 完美!
标签: php mysql database search structure