Mysql “创建临时表”包含除“内部选择”之外的所有其他行
我想创建一个临时文件,里面有一些行,以便在过程中进行一些操作。代码非常简单:Mysql “创建临时表”包含除“内部选择”之外的所有其他行,mysql,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 use
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_堆栈表有完全其他的行,这要感谢SELECTINDECREATE临时查询!看看:
而CREATE TEMPORARY中的唯一查询是:
发生了什么事?我不能在这里使用ORDER BY,因为它的运行速度慢了好几倍。如果没有ORDER BY,您将以“随机”顺序获得记录。通过从两组不同的随机“有序”记录中只挑选前10个,当然每次的结果可能不同 我不能在这里使用ORDER BY,因为它的速度慢了好几倍 但是,如果你想得到一致的结果,你必须
(如果“太慢”,请检查是否设置了正确的索引。)如果没有ORDER BY,您将以“随机”顺序获得记录。通过从两组不同的随机“有序”记录中只挑选前10个,当然每次的结果可能不同 我不能在这里使用ORDER BY,因为它的速度慢了好几倍 但是,如果你想得到一致的结果,你必须
(如果“太慢”,请检查是否设置了正确的索引。)如果没有ORDER BY,您将以“随机”顺序获得记录。通过从两组不同的随机“有序”记录中只挑选前10个,当然每次的结果可能不同。“我不能在这里使用ORDER BY”-如果你想要一致的结果,你必须这样做。(如果“太慢”,请检查是否设置了适当的索引。)@CBroe您应该添加您的评论作为答案。谢谢您的回答。随机排列的记录对我来说不是问题。问题是,为什么这两个SELECT完全返回其他结果?我不能运行这么多次,每次结果都是一样的。好的@CBroe,你说得对。我有无效的索引,所以这就是为什么ORDER BY运行得非常慢。谢谢:)如果没有ORDER BY,您将以“随机”顺序获得记录。通过从两组不同的随机“有序”记录中只挑选前10个,当然每次的结果可能不同。“我不能在这里使用ORDER BY”-如果你想要一致的结果,你必须这样做。(如果“太慢”,请检查是否设置了适当的索引。)@CBroe您应该添加您的评论作为答案。谢谢您的回答。随机排列的记录对我来说不是问题。问题是,为什么这两个SELECT完全返回其他结果?我不能运行这么多次,每次结果都是一样的。好的@CBroe,你说得对。我有无效的索引,所以这就是为什么ORDER BY运行得非常慢。谢谢:)