`sysj` int(8) NOT NULL DEFAULT '0',
`pfen` tinyint(2) unsigned NOT NULL DEFAULT '0',
`local` tinyint(1) unsigned NOT NULL DEFAULT '0',
`toptypeid` tinyint(2) NOT NULL DEFAULT '0',
`typeid` tinyint(2) NOT NULL DEFAULT '0'解:
sysj: 8位日期数字 排序字段
pfen: 1到99的数字 排序字段
local: 1到9的数字 赛选字段
toptypeid: 1到5的数字 赛选字段
typeid: 2位的数字 赛选字段toptypeid 是一级分类大约4条数据
typeid 是一级分类下的二级分类, 每个一级分类下约10个问:
1,有没有必要加toptypeid 字段?
其实查询时使用 typeid in(12,13,14,15,16,18,12,17)这样也可以实现,但是觉得好像使用 toptypeid = 1 这样貌似好些?
2, 多字段索引优化
pfen sysj是按评分排序,和其他字段索引我写的是这样 KEY `toptypeid` (`toptypeid`,`local`,`sysj`),
KEY `toptypeid` (`toptypeid`,`local`,`pfen`),
KEY `typeid` (`typeid`,`local`,`sysj`),
KEY `typeid` (`typeid`,`local`,`pfen`) 当然 ,如果不要toptypeid, 可以省略前3个索引.
想知道大家的想法与建议,主要是这个是常用到的列表检索方式.
解决方案 »
- 一条“稍”复杂的sql 求改编一下 现在有点慢。。。。
- 放文件系统里快,还是数据库里快
- 大数据量表分表后如何实现关系查询?
- 初学mysql,买了个虚拟主机空间,用什么客户端管理最好呢?
- 如何一次性插入多行记录
- 关于Linux Windows下的分布式数据库设置
- 请大家帮忙,mysql-administrator 还原mysql数据库的问题,有用过的帮帮忙哦~!
- 由于用了左连接!执行速度很慢!有什么解决办法吗?
- 求助 1054 - Unknown column '*' in 'where clause'的问题
- 如何主动加锁?
- MySQL
- 数据库从2g内存的pc机,迁移到HP 380G7的小型机上,内存8G,如何优化mysql数据库?
单独的typeid 也是可以的,看自己需要吧.
2,手册里7.2.12. MySQL如何优化ORDER BY
有介绍如何优化排序.
写错
是
当然 ,如果不要toptypeid, 可以省略前2个索引.
`toptypeid` (`sysj`,`local`,`toptypeid`)
2 lz建的这些索引 用explain看看是否有用到
这个确实不知道.
我参考dz论坛的 KEY 'typeid' (fid
typeid
displayorder
lastpost
)他的做法正好相反
上面的字段介绍和索引组合已经处理了啊.where typeid(或)toptypeid local
order sysj
或
order pfen例子:
select * form table where typeid = 12
order by pfen DESCselect * form table where toptypeid = 2 and local =2
order by sysj DESC如果不用toptypeid的话select * form table where typeid in (12,13,14,13,15,12,12,12) and local =5
order by id DESC组合大家应该想得到了吧
这样的一个复合索引,相当于三个索引
KEY `toptypeid1` (`toptypeid`)
KEY `toptypeid2` (`toptypeid`,`local`)
KEY `toptypeid3` (`toptypeid`,`local`,`sysj`)
MYSQL使用的是最左前缀索引,复合索引建立后,能够用到最左前缀的其他索引就不需要再创建了。
order by id DESC
这个命令将使用不到索引,因为ID不在索引字段内。
数据量不是很大
估计前期就几千条数据,几万条数据
预计大部分时间在10W/ 20W以下主要是不想以后再麻烦
索引创建(typeid,local,pfen) (typeid,local,sysj)这两个就行了。
(pfen,local,typeid) ?
ID
主键 有用么