现有一张表customer,其中数据有1百万条,现在要对它进行查询遍历,$customer = new Customer();
$customers = $customer->getAll();
foreach($customers as $c) {
// ...
}
$customers = $customer->getAll();
foreach($customers as $c) {
// ...
}
解决方案 »
- 手拉手
- SQL-FRONT中存储过程字符类型转换的问题
- mysql索引
- MYSQL的存储过程使用变量作为表名,为什么不能使用SELECT INTO给变量赋值?
- 求高手给点C++Builder+mysql的开发经验
- mysqldump --add-drop-table -h127.0.0.1 -uroot -p --all-databases > db.sql 那里错了?
- windows2000上的mysqlcc无法连接到linux上的mysql server3.2.23
- 请大家进来看看俺的MYSQL是什么问题?????
- 关于死锁的问题
- 一般人写不出这条SQL 删除前十条以后的所有数据
- 求mysql数据库工程师面试的题目
- 大神,帮我找找错吧~!!!mysql的储存过程
在查询字段上建立过索引没有?
表结构是这样
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 ;sql语句这样SELECT * from bd_customer WHERE delete_status = 0目的是怎么让这个查询变的更快些。
delete_status有多少种值?
KEY `Index_3` (`delete_status`)
分表:将0、1分开存储(2个表)
分区表:
参考一下MYSQL的HELP
http://dev.mysql.com/doc/refman/5.1/zh/partitioning.html
只有两种值,索引的作用不是明显,不过有总比没有强
1个存放delete_status=1的记录
sql语句慢,程序遍历也很慢
程序遍历的代码慢的话,要分析是哪几段程序慢了。未必都是MYSQL的问题。