Похоже, вы хотите показать 12 последних участников, которые соответствуют определенным критериям.
Несколько вещей.
RIGHT JOIN
в photos
на самом деле является обычным внутренним JOIN
: его столбцы появляются в вашем предложении WHERE
. members
и photos
. SELECT many columns FROM ... JOIN ... ORDER BY column... LIMIT 12
является известным антипаттерном производительности: он создает сложный набор результатов, затем сортирует все, а затем отбрасывает почти все. Расточительное. WHERE....members.banned != "1"
фильтры неравенства, подобные этому, которые заставляют SQL работать тяжелее (== медленнее), чем равенства. Если вы можете изменить это на = "0"
или что-то подобное, сделайте это. (Я полагаю, ваш столбец lastdate
находится в вашей таблице members
, но вы не сказали нам этого в своем вопросе.)
Поэтому попробуйте что-то подобное, чтобы найти двенадцать Участники, которых вы хотите отобразить.
SELECT members.mem_id
FROM members
JOIN photos ON members.mem_id=photos.mem_id
WHERE photos.main=1
AND photos.approved=1
AND members.banned!="1"
AND members.profile_photo="1"
AND members.profile_essentials="1"
AND members.profile_user="1")
ORDER BY lastdate DESC
LIMIT 12
Это дает вам идентификаторы двенадцати членов, которые вы хотите. Используйте его в своем основном запросе.
SELECT members.mem_id, members.username, members.online,
members.dob, members.regdate, members.sex,
members.mem_type, members.aboutme,
geo_cities.name AS city,
geo_countries.name AS country, photos.photo_path
FROM members
LEFT JOIN geo_cities ON members.cty_id=geo_cities.cty_id
LEFT JOIN geo_countries ON geo_cities.con_id=geo_countries.con_id
JOIN photos ON members.mem_id=photos.mem_id
WHERE members.mem_id IN (
SELECT members.mem_id
FROM members
JOIN photos ON members.mem_id=photos.mem_id
WHERE photos.main=1
AND photos.approved=1
AND members.banned!="1"
AND members.profile_photo="1"
AND members.profile_essentials="1"
AND members.profile_user="1")
ORDER BY lastdate DESC
LIMIT 12
)
ORDER BY lastdate DESC
LIMIT 12
Это находит двенадцать членов, о которых вы заботитесь, а затем вытаскивает только их записи, вместо того, чтобы извлекать все записи.
Затем создайте составной индекс по members(profile_photo, profile_essentials, profile_user, banned, lastdate)
. Этот составной индекс значительно ускорит ваше предложение WHERE
.
Аналогично, создайте составной индекс на photos(mem_id, main, approved, photo_path)
.
Вещи всегда становятся захватывающими, когда базы данных начинают расти! Прочитайте онлайн-книгу Маркуса Винанда https://use-the-index-luke.com/
Сделал Вы пробуете электронную почту:: Отправьте:: Gmail?
Вы могли всегда отправлять с SMTP. Сервером является smtp.gmail.com, он требует TLS и использует аутентификацию. Вам, вероятно, также придется включить POP/IMAP в Вашей учетной записи.
У меня была та же проблема с Почтой:: Веб-почта:: Gmail, я закончил тем, что использовал Сеть:: IMAP:: Простой:: SSL для получения моей почты от Gmail. Я предположил бы, должен ли я был попытаться отправить почту с ним, я сначала попробовал бы Сеть:: SMTP:: Сервер.