小编mpr*_*att的帖子

使用左连接准确分页

我一直在思考这个问题,并且我认为最好先问一下并倾听其他人的想法.

我建立了一个在Mysql上存储位置的系统.每个位置都有一个类型,一些位置有多个地址.

表格看起来像这样

location
  - location_id (autoincrement)
  - location_name
  - location_type_id 

location_types
  - type_id
  - type_name (For example "Laundry")

location_information
  - location_id (Reference to the location table)
  - location_address
  - location_phone
Run Code Online (Sandbox Code Playgroud)

因此,如果我想查询最近添加的10个数据库,我会选择以下内容:

SELECT l.location_id, l.location_name,
       t.type_id, t.type_name,
       i.location_address, i.location_phone
FROM location AS l
LEFT JOIN location_information AS i ON (l.location_id = i.location_id)
LEFT JOIN location_types AS t ON (l.location_type_id = t.type_id)
ORDER BY l.location_id DESC
LIMIT 10
Run Code Online (Sandbox Code Playgroud)

对?但问题是,如果一个位置有超过1个地址,限制/分页将无法生效,除非我"GROUP BY l.location_id",但这将只显示每个地方的一个地址..会发生什么有多个地址的地方?

所以我认为解决这个问题的唯一方法是在循环内部进行查询.这样的事情(伪代码):

$db->query('SELECT l.location_id, l.location_name,
            t.type_id, t.type_name
            FROM location AS l …
Run Code Online (Sandbox Code Playgroud)

php mysql performance

8
推荐指数
1
解决办法
2446
查看次数

标签 统计

mysql ×1

performance ×1

php ×1