PHP 超时,PHP 管理员在查询时崩溃,NOT IN


PHP times out and PHPmyadmin crashes on query with NOT IN

我在数据库中有两个表。表 1 存储用户,表 2 存储用户生成的数据。

由于表1中的某些用户出现错误,表2中没有任何数据。我想通知这些用户。

我正在使用MySQL以多种方式尝试此操作。但是没有任何效果,因为PHPmyAdmin冻结或PHP超时。这可能是因为第一个表包含 28.000 行,第二个表包含 80.000 行。我只需要最后 5 天。

试用编号 1

SELECT gebruikers.g_id
FROM gebruikers LEFT JOIN objecten ON objecten.o_g_id=gebruikers.g_id
WHERE objecten.o_g_id IS NULL

解释选择

id  select_type     table   type    possible_keys   key     key_len     ref     rows    Extra
1   SIMPLE  gebruikers  index   NULL    PRIMARY     4   NULL    25227   Using index
1   SIMPLE  objecten    ALL     NULL    NULL    NULL    NULL    81002   Using where; Not ex

试用号2

SELECT g_id FROM gebruikers
WHERE g_id NOT IN(SELECT o_g_id FROM objecten WHERE o_startdatum <= NOW() AND o_startdatum >=NOW() - INTERVAL 5 DAY)

我做错了什么?

查询以获取所需记录:

SELECT 
    gebruikers.g_id
FROM
    gebruikers
        LEFT JOIN
    objecten ON objecten.o_g_id = gebruikers.g_id
WHERE
    objecten.o_g_id IS NULL
        and o_startdatum <= NOW()
        AND o_startdatum >= (NOW() - INTERVAL 5 DAY);

如果第二个表具有空值,则"试用 nr 1"很好,但它可能是字段值为空而不是空,因此您应该使用 or 子句 objecten.o_g_id = ''。最后一个查询将是: 从 GEBRUIKERS 中选择 gebruikers.g_id 左连接对象 在 objecten.o_g_id=gebruikers.g_id 其中 (objecten.o_g_id 为 NULL) 或 (trim(objecten.o_g_id) ='')