0

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

0 回答 0