日期:2014-05-18  浏览次数:20482 次

sql语句优化,select top 1 表1 where 某字段='*' order by 更新时间 DESC
sql 表GB有id(唯一标识)、姓名、分数、评分日期 四个字段。如果要select 姓名字段是小王的所有行中最后一个评分日期的分数。
select top 1 GB where 姓名='小王' order by 评分日期 DESC。
这样的运算顺序应该是 在表GB中 先找出所有'小王'来,然后按 评分日期 降序排列 在选出排序后的top1来。 请问这样是不是必须要检索表的所有行,如果这个表有上百万行,是不是就会很慢?有没有好的优化方法?

------解决方案--------------------
你可以在姓名和日期上加索引,确定名称查询效率还好,模糊查询效率不是很高,必要时要考虑全文索引。
------解决方案--------------------
给性别字段加上索引,查询的时候能快一些。
------解决方案--------------------
那也要看你的返回结果集.如果你表1000条,990条小王,那样就不如全表扫描了,

如果需要建立 IX 性名包含(分数,时间),再测试看计划如何