sql优化,程序优化 为什么不把codeall独立作为一个表:jobid code用find_in_set这种函数实在是太……了…… 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1 datetime建索引2 建议建job和majortype的关联表 job_mt jobid code3 或者 job表的codeall 里存放majortype表中的id拼成的字符串,而不是code组成的字符串,因为find_in_set对数字字符串有内置优化sql语句本身好像没啥优化的 1.建立codeall和datetime的复合索引2.DATE_SUB(NOW(),INTERVAL 3 MONTH) < datetime,把datetime放到左边修改之后explain select对比一下搜索结果 datetime 放左边 右边 explain各项值没有变化,不过建立这个复合索引后,rows变少了很多 mysql判断时间的select、排列,弄不好就要对所有数据进行查询,我给你出的方子就是要缩减搜索对象。rows少,说明被搜索的对象少了,速度自然提高。 1.建立codeall和datetime的复合索引 的确select搜索的行数减少了很多 谢谢froole兄 和楼上所有人的回答 索引是有健, 但是这样的复合索引没有建 我想还没有进一步的优化, 或者其他的建议呢? 依照lz给的表结构,优化应该就到此为止了,再优化恐怕就要改结构了。majorytype和job关系的表单分出一个来。 SELECT name,datetime,get_name(codeall) FROM job WHERE DATE_SUB(NOW(),INTERVAL 3 MONTH) < datetime ORDER BY datetime DESC实现自定义函数get_name(codeall),根据code翻译出 name 使用MySQL的命令FIND_IN_SET等还是很高效的,至少比php高效 增加一个表格做INDEX是最好的方法现在不做只会以后痛苦 关于select下拉框 编辑信息时自动选中的问题 (smarty模板中) 如何能够让上传sql文档变得界面化 在ASP里可不可以调用PHP文件啊?? 谁帮我看看 这什么地方出错了啊 我搞了好几个小时了 诡异的APACHE虚拟主机配置 用php如何获得当前目录的文件数? 求救!如何调用.net的webservice 自己写了个动态树,为什么是死循环? 用php发送mail问题 注册登陆系统的问题 为什么调用数组的值时显示空白 php传递变量名
2 建议建job和majortype的关联表 job_mt
jobid code
3 或者 job表的codeall 里存放majortype表中的id拼成的字符串,而不是code组成的字符串,因为find_in_set对数字字符串有内置优化sql语句本身好像没啥优化的
2.DATE_SUB(NOW(),INTERVAL 3 MONTH) < datetime,把datetime放到左边
修改之后explain select对比一下搜索结果
我给你出的方子就是要缩减搜索对象。
rows少,说明被搜索的对象少了,速度自然提高。
的确select搜索的行数减少了很多
索引是有健, 但是这样的复合索引没有建
我想还没有进一步的优化, 或者其他的建议呢?
依照lz给的表结构,优化应该就到此为止了,
再优化恐怕就要改结构了。majorytype和job关系的表单分出一个来。
DATE_SUB(NOW(),INTERVAL 3 MONTH) < datetime ORDER BY datetime DESC实现自定义函数get_name(codeall),根据code翻译出 name
现在不做只会以后痛苦