Фильтрование базы URL'в

GrayMaster

Новичок
Фильтрование базы URL'в

Есть база URL'ов (более 100.000 записей)
Подскажите пожалуйста как можно её максимально быстро отфильтровать по доменам - т.е. удалить всё не уникальные домены из базы...
 

GrayMaster

Новичок
id|url|
Вот в таком.
Где id - индекс.

я делаю так:
select... where `url` like '%domain.com%'

Но мне кажется это не лучший вариант...
 

tf

крылья рулят
>>Но мне кажется это не лучший вариант...
зря. чемже тебе твойже запрос не нравится
выполняет поставленную задачу -> значит нормально
 

tf

крылья рулят
тебя именно домены интересуют или url?
SELECT DISTING SUBSTRING_INDEX(url, '/', 3) table1 WHERE url REGEXP 'http://(a-zA-Z)/')
если url что-то не соображу как дальше пометить url уникальный а состальные удалить
 

GrayMaster

Новичок
Нужно чтоб на один домен попадался лишь 1 URL.
Я не удаляю, а добавляю уникальные URL'ы в другую таблицу.

-~{}~ 15.12.05 19:25:

1-я тиблица:
http://url1/file1.html
http://url1/file2.html
http://url1/file3.html
http://url2/file1.html
http://url2/file2.html
http://url3/file1.html
http://url3/file2.html

Результат:
http://url1/file1.html
http://url2/file1.html
http://url3/file1.html
 

tf

крылья рулят
[sql]update WHERE DISTINCT SUBSTRING_INDEX(url, '/', 3) NOT IN(SELECT DISTING SUBSTRING_INDEX(url, '/', 3) table1 WHERE url REGEXP 'http://(a-zA-Z)/'))[/sql]
вроде должно сработать с твоими url
на большее пока фантазия иссялка
 

tf

крылья рулят
если твой url подходит под шаблон REGEXP 'http://(a-zA-Z)/'
select count(*) from table1 WHERE SUBSTRING_INDEX(url, '/', 3 )=SUBSTRING_INDEX( $url, '/', 3 )
если вернет 0 значт можно
если >1 значит уже есть такой домен
но лучшебы храил совй домены отдельно от url
 

GrayMaster

Новичок
Последний приведённый пример понятен...
Но вопрос остаётся открыт - как из таблицы выбрать только URLы, имеющие уникальные домены ?
 

tf

крылья рулят
[del..................]
Автор оригинала: GrayMaster
Последний приведённый пример понятен...
Но вопрос остаётся открыт - как из таблицы выбрать только URLы, имеющие уникальные домены ?
а уж если он понятен буть добр почитать пояснения к нему
три поста выше я уж приводил тебе запрос на твой сейчашний вопрос прочти его сново и подумай

ps.
Подскажите пожалуйста как можно её максимально быстро отфильтровать по доменам - т.е. удалить всё не уникальные домены из базы...
Но вопрос остаётся открыт - как из таблицы выбрать только URLы, имеющие уникальные домены ?
определись сначалос со своими вопросами. кудаеся из крайности в крайность решая простую задачу - создается впечатление что сам не паймешь что хочеш
 

ForJest

- свежая кровь
GrayMaster
Предлагаю вариант решения
1. Создать доп. поле для домена
2. через UPDATE выделить туда домены
3. ALTER IGNORE TABLE ADD UNIQUE(domain);
Другой вариант
1. Создаём таблицу id, UNIQUE(domain)
2. Копируем туда INSERT IGNORE ... SELECT домены
3. Удаляем из таблицы все записи, id которых нет в таблице с доменами.
 
Сверху