Вопрос

Когда я запускаю этот запрос на SQL Server с сервера ваша.

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 рядами.

Это убивает сервер. Это вызвано из сценария PHP через Ajax. Я должен закрыть страницу, которая называет ее.

Я не знаю, что он возвращается, но я знаю, что то, что я хочу сделать, должна создаваться с группой и иметь, но я не знаю как.

Таблица 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

Кто -нибудь может сказать мне, насколько плохой запрос и что он возвращает?

Это было полезно?

Решение

Вы выбираете как из AIKI_USER, так и из OCAL_FILES в основном запросе, не указав пункт об объединении, где в вложенном запросе не останавливает полное соединение таблицы ...

Другие советы

Я бы порекомендовал запустить план объяснения обоих запросов и посмотреть, что вам говорит база данных.

Я предполагаю, что вы должны сделать сканирование стола, поэтому производительность ужасна.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top