siv1987

siv1987
Рейтинг
427
Регистрация
02.04.2009
zusul:
если я убираю tag.php?skey= то редирект на уже существующие страницу с tag.php?skey= как прописать тогда?

Я не понял куда вас редирект, но как прописать это должно быть вам виднее. Общая инструкция есть выше.

В .htaccess прописать реврайт:

RewriteRule ^tag/([^/]+)/ /tag.php?skey=$1 [L]

В tag.php проверять переменную skey на utf-8 и при необходимости перекодировать в cp1251. С кириллицей у вас постоянно будут поступать значения в utf-8.

В скриптах/шаблоне изменить ссылку тегов на 'site.ru/tag/'.urlencode($tag).'/';

Вариантов особо нет - реврайты. Главное в исходном коде писать ссылки в закадированым виде, а в скриптах проверять на utf8 и преобразовывать в cp1251.

В кривых руках или в ошибках скрипта. Консоль ошибок вам в помощь.

imbalance:
запрос все равно очень медленно работает

EXPLAIN SELECT приведите и CREATE TABLE. Возможно имеет смысл сначала дернуть первичный ключ.

imbalance:
индексы могут отрицательно повлияет на работоспособность БД?

Да. Чем больше индексов тем тяжелее обновляется таблица.

Составной по всем трем полям. Только не переборщить с индексами, нужно оценивать на сколько оправдано использование индекса, если запрос выполняется в админке раз в месяц за 3 секунды добавлять новый индекс не имеет смысла.

Благодарю, запрос переделал, стал работать быстрее, хотя все равно, далеко до идеала...

Смотрите индекс по используемым полям в where, дальше в упираетесь только в производительности селекта по используемым полям. Возможно нужно создать составной индекс, возможно переделать структуру какого-то индекса чтобы он покрывал поля из where.


Возник еще вопрос, что посоветуете со следующим запросом?

Советуем не использовать километровые псевдонимы таблиц. Одна буква куда нагляднее чем название из стопиццот символов каким бы оно небыло информативным - запрос превращается в портянку.

imbalance:
ORDER BY id desc LIMIT 272010,10

В этом ваша проблема. Умные люди давно уже придумали сначала отсортировать первичный ключ, потом джоином выбирать остальные записи (на форуме не раз уже обсуждалось эта тема).

Ваш запрос будет выглядеть примерно так:

SELECT c.*, p.*, u.* FROM dle_comments c

INNER JOIN (SELECT id FROM dle_comments WHERE approve=1 AND is_deleted=0 ORDER BY id desc LIMIT 272010,10) z ON z.id=c.id
LEFT JOIN dle_post p ON (c.post_id=p.id AND p.approve=1)
LEFT JOIN dle_users u ON c.user_id=u.user_id

На тех, которые специально предназначены для досок объявлений. Если планируется серьезный проект, лучше сразу брать нормальные платные варианты.

Всего: 6568