1 には temp_table と table の 2 つのテーブルがあり、どちらもMyISAM
.
temp_table (頻繁に書き込み、毎分 cron ジョブを実行してデータを挿入)
id(auto_increment),title(varchar(200)),content(varchar(500)),date(DATETIME), mykey(tinyint(1) Default 1)
テーブル (頻繁に読み取り、カスタム検索用、cron ジョブで temp_table から 10 分ごとに更新)
id(int(11)),title(varchar(200)),content(varchar(500)),date(DATETIME), hour(smallint(2))
現在、データは約 300MB/テーブルで、更新ごとに2,000 ~ 3,000 行が転送されます。
require dirname(__FILE__) . '/../connection.php';
mysql_select_db("news",$connextion);
mysql_query("SET NAMES utf8");
$query = mysql_query("INSERT INTO table (hour,id,title,content,date) values '".date('H')."',SELECT id, title,content,date from temp_table where mykey = '1'");
$query = mysql_query("UPDATE temp_table SET mykey='2' WHERE mykey = '1'");
//if data has transfer, update mykey='2' for a mark.
mysql_close($connextion);
しかし、何もINSERT INTO table
、正しい mysql クエリを作成する方法はありません。この方法はより効率的ですか? mysql 接続時間を短縮し、メモリ使用量を減らす必要があります。ありがとう。
PS: temp_table には、タイトルが重複しているかどうかをチェックするためのルールがあるため、temp_table は削除できず、日付が 1 か月前の場合、テーブルは毎日クリアされます。