求教:什么情况下才用视图,存储过程或query_cache或memcache? 想生成临时表

fxs_2008 2010-11-05 01:52:35
真正用时才发现知识和经验的不足,各位老大能说说吗!

另一实际问题:有一实际分页要求(第一个,最后一个,前一个,后一下)。但由于表结构历史原因,查询一次至少要关联3次以上。数据库为inno,现在查一次在30多秒之后。一表在40万记录;一表在300万记录。

因为有很多分类都有这种分页要求。且都要查上面两个表(即两个表多次关联)。

数据表的索引应已为最优,否则早就崩了。

我的想法是能否生在临时表(即将相关的分类的按相当排序),以后查时只查这几个临时表。(另外,新增数据频繁,所以,临时表如没有办法实时,可以定时生成)!

象这种需求用什么方案比较好?

先谢了!



...全文
161 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2010-11-05
  • 打赏
  • 举报
回复
问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧
ACMAIN_CHM 2010-11-05
  • 打赏
  • 举报
回复
没什么好办法。

你的表结构是什么?你的查询语句是什么? 不把这些东西贴出来别人无法进行分析。
fxs_2008 2010-11-05
  • 打赏
  • 举报
回复
现在没有办法重新设计表,老板不让,只能想优化。
就那40万的表,我查一next 2.5秒
seai 2010-11-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 fxs_2008 的回复:]
真正用时才发现知识和经验的不足,各位老大能说说吗!

另一实际问题:有一实际分页要求(第一个,最后一个,前一个,后一下)。但由于表结构历史原因,查询一次至少要关联3次以上。数据库为inno,现在查一次在30多秒之后。一表在40万记录;一表在300万记录。

因为有很多分类都有这种分页要求。且都要查上面两个表(即两个表多次关联)。

数据表的索引应已为最优,否则早就崩了。

我的想……
[/Quote]


只个表连接要看什么情况,如果把连接的表设计的很简洁,索引也优化,几十W的数据互相连接问题也不大吧?

换句话说可以把一些表做成只含有必要的键,额外的数据有详请表提供,这样的话,插入更新也能从中获得不少好处。

欢迎大家拍砖!
wwwwb 2010-11-05
  • 打赏
  • 举报
回复
如果新增数据不影响临时表中的数据,应该可行
wwwwb 2010-11-05
  • 打赏
  • 举报
回复
如果新增数据不影响临时表中的数据,应该可行
zuoxingyu 2010-11-05
  • 打赏
  • 举报
回复
我的想法是能否生在临时表(即将相关的分类的按相当排序),以后查时只查这几个临时表

我现在就是这样处理的。做一个中间表,把原始记录进行一个初步的统计汇总后,写入到中间表,用EVENT每天晚上2点自动执行这个统计操作。同时中间表进行分区。
Windows下php中Memcache的安装: 1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached 2. 在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装 3. 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。 4.下载php_memcache.dll,请自己查找对应的php版本的文件 5. 在C:\winnt\php.ini 加入一行 ‘extension=php_memcache.dll’ 6.重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功! memcached的基本设置: -p 监听的端口 -l 连接的IP地址, 默认是本机 -d start 启动memcached服务 -d restart 重起memcached服务 -d stop|shutdown 关闭正在运行的memcached服务 -d install 安装memcached服务 -d uninstall 卸载memcached服务 -u 以的身份运行 (仅在以root运行的时候有效) -m 最大内存使用,单位MB。默认64MB -M 内存耗尽时返回错误,而不是删除项 -c 最大同时连接数,默认是1024 -f 块大小增长因子,默认是1.25 -n 最小分配空间,key+value+flags默认是48 -h 显示帮助 Memcache环境测试: 运行下面的php文件,如果有输出This is a test cache!,就表示环境搭建成功。开始领略Memcache的魅力把! mem = new Memcache(); $mem->addserver("127.0.0.1", 11211); $mem->set("mykey", "This is a test cache!", 0, 60); $val = $mem->get("mykey"); echo $val; ?>

56,675

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧