Mysql表设计相关: 这两种查询方式那个快?
有一个表(tab1)有1万条记录, 主要结构如下:
id name rank , id是主索引唯一, rank是记录的排名(按某种规则). 这个排名基本不变,而且只关心前100个排名. 换句话说, 1万条记录只有其中的100条rank值有效(1-100),其余都是相同的值,如200.
现在我想选出前100名, 有两种方案:
1. 直接选
SELECT * from tab1 order by rank LIMIt 0,100
2. 建立一个top100表, 提前把tab1中的那100条记录的id存到top100表里面:
top100表结构: id, tab1_id, rank (这个和tab1表的id对应), 然后选的时候:
SELECT tab1.* from tab1, top100 where top100.tab1_id=tab1.id order by top100.rank LIMIT 0,100
之所以这样做是考虑到方案2只须按top100和software的索引选择, 要比在tab1 1万条记录中选快, 这种想法对不对?