Domanda

Quando ho eseguito questa ricerca SQL Server da un server cache di Varnish.

select count(distinct email) from aiki_users, ocal_files where userid = 
       (select upload_user from ocal_files where upload_user = userid limit 1)

Con tavolo aiki_users avente> 80000 righe

e la tabella ocal_files avente> 30000 righe.

Si uccide il server. Si chiama da uno script php tramite la tecnologia AJAX. Devo chiudere la pagina che lo chiama.

Non so cosa ritorna, ma so che la cosa che voglio fare deve essere creato con il gruppo da e avere, ma io non so come.

L'aspetto della tabella aiki_users come questo:

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 ;

Non ho corretto accesso al server, non riesco a vedere la defnizione di ocal_files ma:

 ocal_files.aiki_users = aiki_users.userid

Qualcuno può dirmi quanto male la query è e ciò che ritorna?

È stato utile?

Soluzione

si sta selezionando sia da aiki_user e ocal_files nella query principale, senza specificare un join clausola, la quale nella query nidificate non sta andando per fermare la tabella completa unirsi ...

Altri suggerimenti

Mi consiglia di correre SPIEGARE intenzione di entrambe le query e di vedere ciò che il database che si dice.

La mia ipotesi è che si deve fare una scansione di tabella, per cui le prestazioni è terribile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top