#mysql #joomla #query-optimization #inner-join
#mysql #joomla #оптимизация запросов #внутреннее соединение
Вопрос:
Попытка обновить некоторые поля профиля пользователя в Joomla из импортированной таблицы users, в которой есть поисковые таблицы для определенных полей. Ищу некоторые улучшения скорости, поскольку моя пользовательская база данных большая, а время ожидания следующего запроса истекло…
CREATE TABLE joomla.updated_users(UserID varchar(255),Active varchar(255),Absent varchar(255),AllowReconcile varchar(255),Prefix varchar(255),FirstName varchar(255),MiddleName varchar(255),LastName varchar(255),Suffix varchar(255),Email varchar(255),PhoneWork varchar(255),PhoneHome varchar(255),PhoneMobile varchar(255),Fax varchar(255),CountryCode varchar(255),AddressLine1 varchar(255),AddressLine2 varchar(255),MailStop varchar(255),City varchar(255),State varchar(255),PostalCode varchar(255),RequiredApprovals varchar(255),DivisionId varchar(255),OrganizationID varchar(255),LocationID varchar(255),PositionID varchar(255),CostCenterID varchar(255),PartnerType varchar(255),PartnerStatus varchar(255),TrendSegment varchar(255),MonthofService varchar(255),Status varchar(255),Classification varchar(255),LastHireDate varchar(255),OriginalHireDate varchar(255),ApproverID varchar(255),ManagerID varchar(255),Ethnicity varchar(255),Username varchar(255)) CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE joomla.updated_organisation(ID varchar(255),Title varchar(255),ParentID varchar(255),Active varchar(255)) CHARACTER SET utf8 COLLATE utf8_general_ci;
UPDATE joomla.user_profiles
INNER JOIN joomla.users ON joomla.users.id = joomla.user_profiles.user_id AND joomla.user_profiles.profile_key = 'organisation'
INNER JOIN joomla.updated_users ON joomla.updated_users.Email = joomla.users.email
INNER JOIN joomla.updated_organisation ON joomla.updated_users.OrganizationID = joomla.updated_organisation.ID
SET joomla.user_profiles.profile_value = joomla.updated_organisation.Title;
Заранее спасибо!
Комментарии:
1. Для основного плагина профиля? У вас данные в одной строке на пользователя? Есть ли у вас поля профиля, которые вы не обновляете? И вы сопоставляете пользователей на основе адреса электронной почты?
2. Выполняется ли запрос во время рендеринга страницы Joomla или в виде sql-скрипта непосредственно в БД?
3. Запуск его как SQL-скрипта непосредственно в БД. Данные находятся в одной строке на пользователя (таблица updated_users), однако они содержат столбцы с идентификаторами, такими как «organizationID», которые ссылаются на третью таблицу.