sql 表GB有id(唯一标识)、姓名、分数、评分日期 四个字段。如果要select 姓名字段是小王的所有行中最后一个评分日期的分数。
select top 1 GB where 姓名='小王' order by 评分日期 DESC。
这样的运算顺序应该是 在表GB中 先找出所有'小王'来,然后按 评分日期 降序排列 在选出排序后的top1来。 请问这样是不是必须要检索表的所有行,如果这个表有上百万行,是不是就会很慢?有没有好的优化方法?
------解决方案--------------------
你可以在姓名和日期上加索引,确定名称查询效率还好,模糊查询效率不是很高,必要时要考虑全文索引。
------解决方案--------------------
给性别字段加上索引,查询的时候能快一些。
------解决方案--------------------
那也要看你的返回结果集.如果你表1000条,990条小王,那样就不如全表扫描了,
如果需要建立 IX 性名包含(分数,时间),再测试看计划如何