非常感谢您的点击,若您懂,请赐教!
详情如下:
我有一个表,字段为:ID,AA,BB,CC,DD,EE,FF,GG,Date
ID为主键
AA,BB,CC为三个类别
Date为日期
因为我的网页读取数据列表,经常要用到Date列来排序,为了查询速度,所以我把Date设
为聚集索引。
但是小弟不才,接下来就遇到疑问了。
问题一:
因为我也会通过ID来进行前端查询或后台修改某一条数据,为了前端的查询速度,我是否应
该为ID设一个非聚集索引(ID目前已经是主键),设了后速度会提升吗?
问题二:
在网页中产品列表中,经常会用到AA,BB,CC这三个类别来筛选数据,为了查询速度,所以
我给每个列都单独设了一个非聚集索引。但是,有时候这三个列会分别组合起来筛选一些数
据,那这个时候这三个类别对应的三个非聚集索引,会不会三个同时生效而优化速度呢?还
是系统筛选一个速度最快的一个,只掉用一个索引?
若您觉得我的设置非常不合理,请您教教我,谢谢您。。。。
------解决方案--------------------
ID要真是主键的话, 肯定是聚集索引了
个人建议
1.复合主键 primary key(date,ID), 这样肯定接时间顺序存储记录的, 检索排序都很快,如果单纯按日期再查也快, 如果单独按ID来查的话,可以写成(date>='1900-01-01' and date<='2078-12-31') and ID=?, 因为这样的话,肯定能利用上索引
2.复合非聚集索引 (AA,BB,CC), 对于复合索引来说,只有使用了复合中的第一个字段才会利用上索引,所以,按AA,BB,CC哪个使用频繁,而且也可以使用建议1中的技巧,在只按BB查询时,可以写成 AA like '%' and BB=?
------解决方案--------------------
------解决方案--------------------
问题1,date 建立聚集索引,id 查询更新 建立非聚集索引
问题2,aabbcc 经常用到的 建立非聚集索引 其他的列可以用包含列
索引 最好做测试数据,实际的测试一下.