VarnishキャッシュサーバーからSQLサーバーでこのクエリを実行すると。
select count(distinct email) from aiki_users, ocal_files where userid =
(select upload_user from ocal_files where upload_user = userid limit 1)
aiki_users
80000 行を超えるテーブルを使用
およびocal_files
30000 行を超えるテーブル。
サーバーを殺します。ajax経由でphpスクリプトから呼び出されます。それを呼び出しているページを閉じる必要があります。
何を返すかはわかりませんが、やりたいことはgroup byとhavingで作成する必要があることは知っていますが、方法がわかりません。
aiki_users テーブルは次のようになります。
CREATE TABLE IF NOT EXISTS `aiki_users` (
`userid` int(9) unsigned NOT NULL auto_increment,
`username` varchar(100) NOT NULL default '',
`full_name` varchar(255) NOT NULL,
`country` varchar(255) NOT NULL,
`sex` varchar(25) NOT NULL,
`job` varchar(255) NOT NULL,
`password` varchar(100) NOT NULL default '',
`oauth_passcode` varchar(255) NOT NULL,
`oauth_token` varchar(255) NOT NULL,
`oauth_token_secret` varchar(255) NOT NULL,
`usergroup` int(10) NOT NULL default '0',
`email` varchar(100) NOT NULL default '',
`avatar` varchar(255) NOT NULL,
`homepage` varchar(100) NOT NULL default '',
`first_ip` varchar(40) NOT NULL default '0',
`first_login` datetime NOT NULL,
`last_login` datetime NOT NULL,
`last_ip` varchar(40) NOT NULL,
`user_permissions` text NOT NULL,
`maillist` int(1) NOT NULL,
`logins_number` int(11) NOT NULL,
`randkey` varchar(255) NOT NULL,
`is_active` int(5) NOT NULL,
PRIMARY KEY (`userid`),
KEY `username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
サーバーへの正しいアクセス権がありません。ocal_files の定義が表示されませんが、次のようになります。
ocal_files.aiki_users = aiki_users.userid
クエリがどれほど悪いのか、何を返すのか教えてもらえますか?