我在消息列中有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 |