Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запрос, поиск 
:(
    Опции темы
bars80080
Дата 19.2.2010, 20:19 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 5
Всего: 315



задача такова

задумал я сделать для новостей ЧПУ. то есть посетители будут кликать по адресам http:/ /server.ru/news/novaja-novost/ и попадать на новость у которой в поле `chpu`="novaja-novostj"

вопрос первый: надо ли проиндексировать поле chpu раз по нему будет вестись поиск?
может ещё его назначит unique key?

но заморочка у меня связана с другим
дабы не напрягать контентщика придумыванием chpu, я решил, пусть ЧПУ получается из заголовка новости. оно очищается от неугодных символов, кириллица транслитируется в латиницу, а остальные символы обращаются в знак "-"
теперь надо проверить, а есть ли уже такой ЧПУ в таблице, и если есть добавить в ЧПУ индекс (novaja-novost1) и снова проверить, если есть то подставить другую novaja-novost2

на пхп я это сделал, но получается несколько подряд идущих запросов, пока не отыщется свободный ЧПУ.
а вот можно ли решить эту задачу на sql?

скажем один запрос, вроде 

Код

SELECT `chpu` FROM `news` WHERE `chpu` LIKE "novaja-novost%" ORDER BY `id` DESC LIMIT 1


но это не совсем корректный пример. так как он обнаружит и novaja-novost-o-drugom

а тут ведь ещё надо как-то получить оконечный номер
PM MAIL WWW   Вверх
sTa1kEr
Дата 20.2.2010, 12:12 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 7
Всего: 146



Цитата(bars80080 @  19.2.2010,  21:19 Найти цитируемый пост)
вопрос первый: надо ли проиндексировать поле chpu раз по нему будет вестись поиск?
может ещё его назначит unique key?

Именно unique key.

Цитата(bars80080 @  19.2.2010,  21:19 Найти цитируемый пост)
на пхп я это сделал, но получается несколько подряд идущих запросов, пока не отыщется свободный ЧПУ.

Я думаю, что несколько запросов WHERE chpu = "unique_key" лучше, чем сложный алгоритм с WHERE chpu LIKE ''part%".

А еще лучше, что бы значительно сократить количество дубликатов, создать составной уникальный ключ по дате + заголовку, соответственно ссылка тогда будет http:/ /server.ru/news/2010-02-20/novaja-novost/ или http:/ /server.ru/news/2010-02/novaja-novost/ и запрос ...WHERE news_date = '2010-02-20' AND chpu = 'novaja-novost'
PM MAIL   Вверх
bars80080
Дата 20.2.2010, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 5
Всего: 315



Цитата(sTa1kEr @  20.2.2010,  11:12 Найти цитируемый пост)
А еще лучше, что бы значительно сократить количество дубликатов, создать составной уникальный ключ по дате + заголовку, соответственно ссылка тогда будет http:/ /server.ru/news/2010-02-20/novaja-novost/ или http:/ /server.ru/news/2010-02/novaja-novost/ и запрос ...WHERE news_date = '2010-02-20' AND chpu = 'novaja-novost' 

интересная мысль
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0978 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.