查询优化
时间:2011-10-21
来源:互联网
PHP code
$customer = new Customer(); $customers = $customer->getAll(); foreach($customers as $c) { // ... }
这样查询很慢,请问应该怎么优化?
作者: test20111016 发布时间: 2011-10-21
作者: test20111016 发布时间: 2011-10-21
非要得到100万条记录然后来foreach?
作者: PhpNewnew 发布时间: 2011-10-21
作者: kxn308 发布时间: 2011-10-21
数据有100万 难道你的查询不应该在SQL里执行获取需要的结果吗?
非要得到100万条记录然后来foreach?
需求是这样啊,不遍历不行啊
作者: test20111016 发布时间: 2011-10-21
数据持续增长的话有没有做表分区。
作者: ohmygirl 发布时间: 2011-10-21
引用 2 楼 phpnewnew 的回复:
数据有100万 难道你的查询不应该在SQL里执行获取需要的结果吗?
非要得到100万条记录然后来foreach?
需求是这样啊,不遍历不行啊
难道你要在一个页面里面显示100万条数据,给人看还是给鬼看??
作者: xinjian555 发布时间: 2011-10-21
所谓优化,是指如何快速的取出所需的子集
作者: xuzuning 发布时间: 2011-10-21
引用 4 楼 test20111016 的回复:
引用 2 楼 phpnewnew 的回复:
数据有100万 难道你的查询不应该在SQL里执行获取需要的结果吗?
非要得到100万条记录然后来foreach?
需求是这样啊,不遍历不行啊
难道你要在一个页面里面显示100万条数据,给人看还是给鬼看??
不是在页面显示,是后台的一个程序要把这些数据写入缓存中
作者: test20111016 发布时间: 2011-10-21
建索引了么?引擎是?
数据持续增长的话有没有做表分区。
表结构是这样
SQL code
CREATE TABLE IF NOT EXISTS `bd_customer` ( `customer_id` int(11) NOT NULL AUTO_INCREMENT, `company_id` int(11) DEFAULT '0', `customer_name` varchar(180) DEFAULT NULL, `enterprise_id` int(11) DEFAULT NULL, `customer_type` tinyint(4) NOT NULL DEFAULT '1', `gender` tinyint(1) NOT NULL DEFAULT '1', `mobile` varchar(13) DEFAULT NULL, `telephone` varchar(20) DEFAULT NULL, `telephone_ext` varchar(10) DEFAULT NULL, `birthday` int(11) DEFAULT NULL, `email` varchar(160) DEFAULT NULL, `fax` varchar(20) DEFAULT NULL, `post_code` varchar(6) DEFAULT NULL, `identify_type` tinyint(1) DEFAULT '0', `identify_code` varchar(50) DEFAULT NULL, `in_time` int(11) NOT NULL, `province_id` tinyint(11) NOT NULL, `city` varchar(20) NOT NULL, `address` varchar(255) DEFAULT NULL, `delete_status` tinyint(1) NOT NULL DEFAULT '0', `capital_word` varchar(1) DEFAULT NULL, `call_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `t_cusomter_id` varchar(50) DEFAULT NULL, PRIMARY KEY (`customer_id`), KEY `Index_1` (`enterprise_id`,`telephone`), KEY `Index_2` (`company_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1105537 ;
作者: test20111016 发布时间: 2011-10-21
不是在页面显示,是后台的一个程序要把这些数据写入缓存中
那你就该改变思路:采用内存表
作者: xuzuning 发布时间: 2011-10-21
引用 8 楼 test20111016 的回复:
不是在页面显示,是后台的一个程序要把这些数据写入缓存中
那你就该改变思路:采用内存表
什么意思啊,能不能详细点
作者: test20111016 发布时间: 2011-10-21
作者: test20111016 发布时间: 2011-10-21
作者: van416521 发布时间: 2011-10-21
作者: cuishaoyuan 发布时间: 2011-10-21
引用 10 楼 xuzuning 的回复:
引用 8 楼 test20111016 的回复:
不是在页面显示,是后台的一个程序要把这些数据写入缓存中
那你就该改变思路:采用内存表
什么意思啊,能不能详细点
作者: PhpNewnew 发布时间: 2011-10-21
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28