ローカルハブのユーザーがメッセージを保存する場所という名前のテーブルがmessages
あります(Webフォーラムのようなものです)。現在、大多数のユーザーが参加しており、毎日30〜50近くの新しいエントリをテーブルに追加しています。
これは過去数年間続いているため、テーブルには100,000行近くのデータがあります。テーブルの構造はこんな感じです。andと(ニックネーム)はどこfid
にありますか。PRIMARY
ip
id
INDEX
私は今までこの種のクエリを使用していました; 次に、このリンクに示すように、luasqlで結果セットを繰り返します。私によると、これは多くの時間とスペース(バッファ内)を消費します。
`msg` VARCHAR(280) NOT NULL,
`id` VARCHAR(30) NOT NULL,
`ctg` VARCHAR(10) NOT NULL,
`date` DATE NOT NULL COMMENT 'date_format( %m/%d/%y )',
`time` TIME NOT NULL COMMENT 'date_format( %H:%i:%s )',
`fid` BIGINT(20) NOT NULL AUTO_INCREMENT,
`ip` CHAR(39) NOT NULL DEFAULT '127.0.0.1'
私の問題は、最近、PtokaXの新しいAPIに切り替えて、読み取りと書き込みのリクエスト数が劇的に増加していることです。最近MySQLの手順について読んだので、これらの手順がこの状況に対処するためのより高速な方法 か、 より安全な方法かを考えていました。
SELECT *
FROM ( SELECT *
FROM `messages`
ORDER BY `fid` DESC
LIMIT 50 ) AS `temp`
ORDER BY `fid` ASC;
PS
平均して7〜10秒ごとに1つのメッセージを読むという1つのリクエストを受け取ります。週末には、3秒ごとに1つ程度に上昇します。
さらに必要なことがあれば教えてください。
総括する
これは、ストアドプロシージャを呼び出して、より短い時間で最終結果を取得できる方法です。現在のクエリ(およびメソッド)は、データをフェッチして整理するのに3秒近くかかります。