Mysql 优化查询而不是按顺序使用
我想运行一个简单的查询来获取表中最早的n条记录。它有一个创建日期列 我怎样才能不使用order by来获得它呢。这是一个非常大的表,在整个表上使用orderby只获取n条记录并不是很有说服力Mysql 优化查询而不是按顺序使用,mysql,sql,Mysql,Sql,我想运行一个简单的查询来获取表中最早的n条记录。它有一个创建日期列 我怎样才能不使用order by来获得它呢。这是一个非常大的表,在整个表上使用orderby只获取n条记录并不是很有说服力 假设n您可以使用Group By对一些数据进行分组,然后使用Having子句来选择特定记录。您可以使用Group By对一些数据进行分组,然后使用Having子句来选择特定记录。我以前没有测试过这个概念,但尝试在creation_date列上创建索引。它将按升序自动对行进行排序。然后,您的select查询可
假设n您可以使用Group By对一些数据进行分组,然后使用Having子句来选择特定记录。您可以使用Group By对一些数据进行分组,然后使用Having子句来选择特定记录。我以前没有测试过这个概念,但尝试在creation_date列上创建索引。它将按升序自动对行进行排序。然后,您的select查询可以使用orderby creation_date desc和Limit 20来获取前20条记录。数据库引擎应该意识到索引已经完成了排序工作,实际上不需要排序,因为索引已经在保存时对其进行了排序。它所需要做的就是从索引中读取最后20条记录
值得一试。我以前没有测试过这个概念,但是尝试在creation\u date列上创建一个索引。它将按升序自动对行进行排序。然后,您的select查询可以使用orderby creation_date desc和Limit 20来获取前20条记录。数据库引擎应该意识到索引已经完成了排序工作,实际上不需要排序,因为索引已经在保存时对其进行了排序。它所需要做的就是从索引中读取最后20条记录 值得一试。在创建日期创建一个索引,并使用order by creation\u date asc | desc limit n进行查询,响应速度将非常快,事实上,它不会更快。对于最新的n场景,您需要使用desc 如果您想对该查询施加更多约束,例如state='LIVE',那么查询可能会变得非常慢,您需要重新考虑索引策略。在创建日期创建索引,并使用order by creation_date asc | desc limit n进行查询,并且响应会非常快,事实上,它不会更快。对于最新的n场景,您需要使用desc
如果您希望对该查询施加更多约束,例如,where state='LIVE',那么查询可能会变得非常缓慢,您需要重新考虑索引策略。当您关心性能时,您可能不应该过早放弃使用order 这样的查询可以实现为由适当索引支持的Top-N查询,运行速度非常快,因为它不需要对整个表进行排序,甚至不需要对selecte行进行排序,因为数据已经在索引中排序 例如:
select *
from table
where A = ?
order by creation_date
limit 10;
如果没有适当的索引,如果你有大量的数据,它会很慢。但是,如果创建这样的索引:
create index test on table (A, creation_date );
查询将能够以正确的顺序开始提取行,而无需排序,并在达到限制时停止
配方:将where列放入索引中,然后是order by列
如果没有where子句,只需将ORDERBY放入索引中即可。order by必须与索引定义匹配,尤其是在存在混合asc/desc订单的情况下
索引Top-N查询是性能之王,请确保使用它们
我有几个链接可以进一步阅读我所有的:
以甲骨文为中心
尚未涵盖Top-N查询,但将于2011年发布。当您关心性能时,您可能不应该过早放弃使用order 这样的查询可以实现为由适当索引支持的Top-N查询,运行速度非常快,因为它不需要对整个表进行排序,甚至不需要对selecte行进行排序,因为数据已经在索引中排序 例如:
select *
from table
where A = ?
order by creation_date
limit 10;
如果没有适当的索引,如果你有大量的数据,它会很慢。但是,如果创建这样的索引:
create index test on table (A, creation_date );
查询将能够以正确的顺序开始提取行,而无需排序,并在达到限制时停止
配方:将where列放入索引中,然后是order by列
如果没有where子句,只需将ORDERBY放入索引中即可。order by必须与索引定义匹配,尤其是在存在混合asc/desc订单的情况下
索引Top-N查询是性能之王,请确保使用它们
我有几个链接可以进一步阅读我所有的:
以甲骨文为中心
还没有涵盖Top-N查询,但这将在2011年出现