小编Owe*_*ker的帖子

mySQL 查询优化 — 多重连接或选择 ... where not in (select distinct...)?

背景

我有一个 Drupal 安装访问一个大型用户数据库(~200k 行),我的“人员查找器”功能需要访问所有这些行(以随机顺序)。我似乎无法在 Drupal 的 UI 中使用LIMIT和使用OFFSET(并且我在 Drupal 视图中使用大型数据集进行慢查询时在 Drupal.SE 上有一个与 Drupal 特定的问题略有不同- 更适合在 SQL 或 PHP 中处理?,哪个解决了这个问题,以及这个问题的一部分),但我的特定于 mySQL 的问题如下

我需要根据另一个表中的数据排除一些行(“包括角色 A 中所有不在角色 B、C 或 D 中的用户)。Drupal 生成的查询是有效的

SELECT
    users.uid AS uid,
    /* some columns */,
    RAND() AS random_field
FROM
    users users
    INNER JOIN users_roles users_roles ON users.uid = users_roles.uid
    LEFT JOIN users_roles users_roles2
        ON users.uid = users_roles2.uid
        AND (users_roles2.rid = :views_join_condition_0
          OR users_roles2.rid = :views_join_condition_1 …
Run Code Online (Sandbox Code Playgroud)

mysql performance join subquery query-performance

6
推荐指数
1
解决办法
7272
查看次数

标签 统计

join ×1

mysql ×1

performance ×1

query-performance ×1

subquery ×1