CREATE TEMPORARY TABLE包含完全除SELECT之外的其他行

时间:2016-01-14 12:18:09

标签: mysql

我想在其中创建一些临时的行,以便在程序中进行一些操作。代码非常简单:

CREATE TEMPORARY TABLE tmp_stack ENGINE=MEMORY AS (
    SELECT users.id AS to_user_id, users.rating AS rating, users.lat AS lat, users.lng AS lng

    FROM users USE KEY (generating_stack)

    WHERE
        users.lat BETWEEN 53.8866 AND 54.8286 AND
        users.lng BETWEEN 17.8999 AND 19.3999

    LIMIT 10
);

它有效,但我的tmp_stack表还有其他行感谢CREATE TEMPORARY查询中的SELECT!看看:

enter image description here

CREATE TEMPORARY中的唯一查询:

enter image description here

发生了什么事?我不能在这里使用ORDER BY因为它的工作速度慢了几倍。

1 个答案:

答案 0 :(得分:2)

如果没有ORDER BY,您将以“随机”顺序获取记录。通过选择两组不同的随机“有序”记录中的前10个,当然每次结果都可能不同。

  

我不能在这里使用ORDER BY因为它的工作速度慢了几倍。

但是如果你想要一致的结果,你必须

(如果“太慢”,请检查是否设置了正确的索引。)