我有一个非常大的数据库(约1000万行),我想尽快在表中列出这些内容。我几乎没有选择:
我可以限制mysql中的行-这不是首选,因为我想计算具有特定数据类型(如附件)的行
获取所有行并使用while循环每次限制1000条记录-我认为这样做很好,但是在内存中调用1000万行看起来很疯狂,我很肯定它的性能肯定会更差。
计算总数据,然后使用limit列出-但mysql count是一个破坏交易的唯一和索引id尽管我面临着mysql count糟糕的时间。
最好的方法是什么?
如果我只想列出1000万行并用php解析数据,每次显示1000行是个坏主意?
1条答案
按热度按时间mec1mxoz1#
有一些事情需要考虑:
数据库优化了吗?如果是,跳过
要从中筛选搜索的索引列
仅从中选择所需的列(而不是选择*)
如果你想计算总数并且id是连续的,你可以选择最新的一行,如果它“那么慢”的话,就根据id来计算
如果您正在查看某种分页,则可以计算行数,并根据用户输入只选择少数记录(使用限制1000进行选择,在第2页时跳过“1000”,等等)
当你使用0.1%的内存时,你不会希望在你的“内存”中有1000万个数据吧?