有一张快递单号表number
,表中有大概5w条数据
每次要使用时取出一条出来,语句如下
SELECT id FROM number WHERE status = 0
status 默认为0待使用 ,1使用中,2已使用
但是每次执行时间超长,大概7秒左右,已给 status 建了索引,但是效果不佳
Explain结果
更新内容 表结构
CREATE TABLE `number` (
`id` int(11) NOT NULL,
`number` varchar(32) NOT NULL,
`number_code` varchar(64) NOT NULL,
`order_id` int(11) DEFAULT NULL,
`oid` varchar(32) DEFAULT NULL,
`src` varchar(128) NOT NULL,
`added_user_id` int(11) NOT NULL,
`added_user_name` varchar(32) NOT NULL,
`added_date` datetime NOT NULL COMMENT '添加时间',
`added_ip` varchar(16) NOT NULL COMMENT '添加时的IP',
`updated_user_id` int(11) DEFAULT NULL COMMENT '更新人id',
`updated_user_name` varchar(32) DEFAULT NULL,
`updated_date` datetime DEFAULT NULL,
`updated_ip` varchar(16) DEFAULT NULL,
`push_json` text,
`push_date` datetime DEFAULT NULL,
`return_json` text,
`return_retstatus` varchar(256) DEFAULT NULL,
`status` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'status 默认为0待使用 ,1使用中,2已使用'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `number`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `oid` (`oid`),
ADD UNIQUE KEY `order_id` (`order_id`),
ADD KEY `order_id_2` (`order_id`),
ADD KEY `status` (`status`);
ALTER TABLE `number`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
SELECT id FROM number WHERE status = 0 limit 1
,让你的sql快到飞起