1

Тема: Видалити записи, що повторюються

Привіт усім, хотів би з Вами проконсультуватися.
У мене є велика база тестів, багато з них повторюються, проте в різних темах. База займає великий розмір - близько 700 Мб.
Я придумав наступну методику. Виділити в базі всі тести а потім GROUP BY по полю "текст запитання"
Додати поле 'search' і в записах, що повторюються записати там ідентифікатор першого однакового запису, а сам текст запитання та варіанти відповіді видалити.
таким чином при пошуку запитань якщо поле 'search' != 0 - тоді шукати запитання з ідентифікатором, що вказане в 'search'.
Можливо Ви запропонуєте кращий варіант

2

Re: Видалити записи, що повторюються

http://webmarker.com.ua/k280l2-Sposob-u … MySQL.html

3

Re: Видалити записи, що повторюються

Мені здається, що Ви неправильно зрозуміли. Дублікати записів повинні залишитися, просто я хотів економити місце на записах, що повторюються. Щоб двічі не записувати текст запитання.

4

Re: Видалити записи, що повторюються

Чому б не скористатися зовнішніми ключами і не виділити запитання в окрему таблицю?

5

Re: Видалити записи, що повторюються

Invader написав:

Чому б не скористатися зовнішніми ключами і не виділити запитання в окрему таблицю?

Можна було б)
Але чи збільшиться навантаження на сервер у такому випадку?

6

Re: Видалити записи, що повторюються

savelikan написав:
Invader написав:

Чому б не скористатися зовнішніми ключами і не виділити запитання в окрему таблицю?

Можна було б)
Але чи збільшиться навантаження на сервер у такому випадку?

Менше, аніж у вашому варіанті. У вас по факту зовнішній ключ, не прописаний в БД + додатковий пошук.

7

Re: Видалити записи, що повторюються

Якщо в таблиці буде зовнішній ключ, то при запиті до цієї таблиці в результаті буде інформація з двох таблиць (по ключу), так? Чи потрібно їх з'єднувати через JOIN?

8

Re: Видалити записи, що повторюються

Так.

9

Re: Видалити записи, що повторюються

savelikan написав:

Якщо в таблиці буде зовнішній ключ, то при запиті до цієї таблиці в результаті буде інформація з двох таблиць (по ключу), так? Чи потрібно їх з'єднувати через JOIN?

Скільки там того SQL ? При бажанні, самі елементарні основи (якими ви, очевидно, не володієте) можна за тиждень вивчити, якщо зразу з і тестувати те, що вчите...

10

Re: Видалити записи, що повторюються

Я хотів написати так, об'єднання. І не за тиждень а за два дні.

11

Re: Видалити записи, що повторюються

Так, не багато. Вибачте, можливо задаю очевидні запитання.
проте виникло ще одне питання. В документації я не знайшов відповіді.
Наприклад, є таблиця А з переліком запитань. Таблиця Б з'єднана зовнішнім ключом з таблицею А.
Потрібно зробити так, щоб після видалення запису в таблиці Б, відповідний запис в таблиці А видалявся тільки тоді, коли він не використовується в інших записах таблиці Б?
Можливо, так?

ON DELETE CASCADE

Чи писати скрипт самому і через КРОН щовечора видаляти записи з таблиці А, які не використовуються в таблиці Б?

12 Востаннє редагувалося savelikan (29.01.2015 20:20:40)

Re: Видалити записи, що повторюються

Хоча в такому випадку воно взагалі не дозволяє зробити два записи в таблиці Б з однаковими ключами(
А якщо RESTRICT - тоді нічого не видаляється