我有一个MyISAM表,有28,900个实体。我用1500块来处理它,这样的查询如下:
SELECT * FROM table WHERE id>0 LIMIT $iStart,1500然后我循环这个,每次增加1500 $iStart。
问题是,在某些情况下,查询将返回相同的行。例如,极限0,1500查询返回与极限28,500,1500查询相同的行。
如果我不订购行,我可以不期望使用限制分页吗?
(当这些查询发生时,表是静态的,没有任何其他查询会更改其行)。
发布于 2011-06-11 08:15:31
与几乎所有其他specify一样,除非指定order子句,否则MySQL MyISAM表根本无法保证返回行的顺序。通常返回的顺序将是从文件系统中读取它们的顺序,该顺序可以根据更新、删除甚至缓存的选择状态从查询更改到查询。
如果希望避免同一行多次返回,则必须按某项进行排序,主键是最明显的候选项。
发布于 2011-06-11 08:14:40
您应该使用order来确保一致的顺序。否则,DBMS可能会以任意顺序返回行(但是,如果对no行进行修改,则假定它是任意的,但在查询之间是一致的)。
https://stackoverflow.com/questions/6314879
复制相似问题