Mysql全表扫描索引

时间:2012-09-09 10:23:20

标签: mysql ajax select limit full-table-scan

我在消息列中有3,090,590行,我使用此代码一次获得3000行。

我正在尝试将我的SQL转换为NoSQL,为此我用Ajax编写了一个PHP脚本。每次Ajax请求$page乘以;例如3000,9000,12000 ......

SELECT * FROM mesajciklar order by id ASC LIMIT $page,3000

不知何故,即使我限制查询,它总是扫描完整的表,这使得MySQL使用100%的可用CPU。我对每一列都有完整的索引,但它仍然很慢。

你能告诉我一个如何优化它的方法吗?

mysql> | mesajciklar | CREATE TABLE `mesajciklar` (
->   `id` int(11) NOT NULL AUTO_INCREMENT,
->   `sira` int(11) NOT NULL DEFAULT '0',
->   `mesaj` text NOT NULL,
->   `yazar` varchar(255) NOT NULL DEFAULT '',
->   `ip` varchar(255) NOT NULL DEFAULT '',
->   `tarih` varchar(255) NOT NULL DEFAULT '',
->   `gun` int(11) NOT NULL DEFAULT '0',
->   `ay` int(11) NOT NULL DEFAULT '0',
->   `yil` int(11) NOT NULL DEFAULT '0',
->   `saat` varchar(255) NOT NULL DEFAULT '',
->   `oy` varchar(255) NOT NULL DEFAULT '',
->   `update2` varchar(255) NOT NULL DEFAULT '',
->   `updater` varchar(255) NOT NULL DEFAULT '',
->   `updatesebep` varchar(255) NOT NULL DEFAULT '',
->   `statu` varchar(255) NOT NULL DEFAULT '',
->   `silen` varchar(255) NOT NULL DEFAULT '',
->   `silsebep` varchar(255) NOT NULL DEFAULT '',
->   PRIMARY KEY (`id`),
->   UNIQUE KEY `id` (`id`) USING BTREE,
->   KEY `sira` (`sira`),
->   KEY `yazar` (`yazar`),
->   KEY `ip` (`ip`),
->   KEY `tarih` (`tarih`),
->   KEY `gun` (`gun`),
->   KEY `ay` (`ay`),
->   KEY `yil` (`yil`),
->   KEY `saat` (`saat`),
->   KEY `oy` (`oy`),
->   KEY `update2` (`update2`),
->   KEY `statu` (`statu`),
->   KEY `silsebep` (`silsebep`),
->   KEY `gun_2` (`gun`,`ay`,`yil`),
->   FULLTEXT KEY `mesaj` (`mesaj`),
->   FULLTEXT KEY `yazar_2` (`yazar`)
-> ) ENGINE=MyISAM AUTO_INCREMENT=1062473327 DEFAULT CHARSET=latin5 |

0 个答案:

没有答案