我现在有一个表里面有400W数据。 用C#写了循环查询,每次查询3000条。 每次执行一会查询就会卡死。 有没有解决办法?
表结构
CREATE TABLE `oms_product_dd` (
`PRODUCT_NO` varchar(13) COLLATE utf8_bin NOT NULL,
`PRODUCT_NAME` varchar(150) COLLATE utf8_bin NOT NULL,
`DETAIL_URL` varchar(150) COLLATE utf8_bin NOT NULL,
`PDT_SPECIALTITLE` text COLLATE utf8_bin,
`CATEGORY_ID` int(11) DEFAULT NULL,
`MARKET_PRICE` varchar(30) COLLATE utf8_bin DEFAULT NULL,
`SALE_PRICE` float DEFAULT NULL,
`CREATEDDT` datetime DEFAULT NULL,
`LASTEDITDT` datetime DEFAULT NULL,
`is_bind` varchar(1) COLLATE utf8_bin NOT NULL DEFAULT 'N',
KEY `I_DD_PRODUCTON` (`PRODUCT_NO`),
KEY `I_DD_LASTEDITDT` (`LASTEDITDT`),
KEY `I_DD_is_bind` (`is_bind`),
KEY `I_DD_CREATEDDT` (`CREATEDDT`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
查询语句
SELECT PRODUCT_NO,PRODUCT_NAME,DETAIL_URL,PDT_SPECIALTITLE,CATEGORY_ID,MARKET_PRICE,SALE_PRICE,CREATEDDT,LASTEDITDT,MAX(CREATEDDT) FROM oms_product_dd GROUP BY product_NO LIMIT @begin,@rownum
表结构
CREATE TABLE `oms_product_dd` (
`PRODUCT_NO` varchar(13) COLLATE utf8_bin NOT NULL,
`PRODUCT_NAME` varchar(150) COLLATE utf8_bin NOT NULL,
`DETAIL_URL` varchar(150) COLLATE utf8_bin NOT NULL,
`PDT_SPECIALTITLE` text COLLATE utf8_bin,
`CATEGORY_ID` int(11) DEFAULT NULL,
`MARKET_PRICE` varchar(30) COLLATE utf8_bin DEFAULT NULL,
`SALE_PRICE` float DEFAULT NULL,
`CREATEDDT` datetime DEFAULT NULL,
`LASTEDITDT` datetime DEFAULT NULL,
`is_bind` varchar(1) COLLATE utf8_bin NOT NULL DEFAULT 'N',
KEY `I_DD_PRODUCTON` (`PRODUCT_NO`),
KEY `I_DD_LASTEDITDT` (`LASTEDITDT`),
KEY `I_DD_is_bind` (`is_bind`),
KEY `I_DD_CREATEDDT` (`CREATEDDT`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
查询语句
SELECT PRODUCT_NO,PRODUCT_NAME,DETAIL_URL,PDT_SPECIALTITLE,CATEGORY_ID,MARKET_PRICE,SALE_PRICE,CREATEDDT,LASTEDITDT,MAX(CREATEDDT) FROM oms_product_dd GROUP BY product_NO LIMIT @begin,@rownum
FROM oms_product_dd
GROUP BY product_NO
LIMIT @begin,@rownum
该表没有主键 ,同一个 PRODUCT_NO 会出现多次。 查询是按分组PRODUCT_NO 按时间取最后一条纪录。
我的数据库是MySql的。
就是MYSQL下的