• Почему некорректные результаты выборки при ORDER BY?

    @brom_portret
    Я, к сожалению, с MySQL дело имел давно, и не так, чтобы много, но:

    1) Наверное, можно создать индекс на поле uid и указывать его при выборке.
    Попробуйте, ради интереса:
    CREATE idx_uid ON table;
    
    SET @uid:= NULL;
    SELECT
        t.id,
        @uid := t.uid
    FROM 
        table t
    FORCE INDEX (idx_uid)
    WHERE 
        t.uid > 0
        AND (@uid IS NULL OR t.uid = @uid) 
        AND t.status = 1


    2) Вместо подзапроса в WHERE я бы использовал INNER JOIN к подзапросу.
    SELECT 
        t.id, t.uid
    FROM table AS t
    INNER JOIN (
        SELECT uid FROM table 
        WHERE 
           uid > 0 AND status=1 
        ORDER BY uid LIMIT 1
    ) AS tt ON t1.uid = tt.uid;
    Ответ написан
    Комментировать