|
Быстрый поиск значений
|
|||
---|---|---|---|
#18+
Есть таблица с одним символьным полем, но несколько десятков тысяч записей. Иногда значения в этом поле дублируются, иногда повторяются по несколько раз. Подскажите, как быстро найти эти повторы и удалить лишние (одно значение должно остаться). Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 05:37 |
|
Быстрый поиск значений
|
|||
---|---|---|---|
#18+
Jimy, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 06:13 |
|
Быстрый поиск значений
|
|||
---|---|---|---|
#18+
alextashkJimy, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Не... так не совсем корректно... если "fignya" есть в этом поле, конечно... Мои дополнения к программе: Лучше "обнулить" переменную (lcOdnoPole = "") и сравнивать не простым (=) равенством, а точным (==), то есть IF lcOdnoPole == OdnoPole THEN... Это же символьное поле... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 06:25 |
|
Быстрый поиск значений
|
|||
---|---|---|---|
#18+
Спасибо, но может я не совсем точно объяснил... Я не знаю, есть ли в таблице "fignya" или еще что. Смысл такой - взять первое значение и посмотреть, встречается ли оно еще где-нибудь в таблице. Если да - выкинуть. Проверяем дальше, если еще раз попалось - выкинуть. Затем значение из второй записи и т.д. Т.е оставить только уникальные. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 06:36 |
|
Быстрый поиск значений
|
|||
---|---|---|---|
#18+
Тебе это и предложили. Суть в том что сначала отсортировать, затем сравнивать соседние, т.к. после сортировки одинаковые встанут друг-за-другом. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 06:58 |
|
Быстрый поиск значений
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 09:40 |
|
Быстрый поиск значений
|
|||
---|---|---|---|
#18+
А, ну да... Всем спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 11:43 |
|
Быстрый поиск значений
|
|||
---|---|---|---|
#18+
А если так? Код: sql 1. 2. 3. 4. 5. 6. 7.
По-моему очень элегантное решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2016, 05:24 |
|
Быстрый поиск значений
|
|||
---|---|---|---|
#18+
Людмila, Элегантно, но не эффективно - количество переборов всей таблицы будет равно количеству записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2016, 11:41 |
|
Быстрый поиск значений
|
|||
---|---|---|---|
#18+
alextashkне эффективно - количество переборов всей таблицы будет равно количеству записей. ... минус удаленные записи! - Scan for !Deleted() но ведь и нужно их проверить Все. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2016, 15:19 |
|
Быстрый поиск значений
|
|||
---|---|---|---|
#18+
Людмila, На сколько я понимаю, физически считывается строка, затем рассматривается признак фильтрации deleted или равно, а затем производится действие. То есть перебираются все записи таблицы столько раз сколько строк. То есть согласно Вашего алгоритма таблица из 1000 строк будет перечитана 1000 раз, причем каждое чтение таблец будет для всех 1000 строк. Мое решение предусматривает только 1 проход, т.е. если нет оптимизации по индексу - в 1000 раз быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2016, 19:09 |
|
Быстрый поиск значений
|
|||
---|---|---|---|
#18+
alextashk, Единственное, в чем вы не правы - Scan for !Deleted() перебирает все записи кроме удаленных. Во всем остальном - полностью с вами согласна! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2016, 03:03 |
|
Быстрый поиск значений
|
|||
---|---|---|---|
#18+
alextashk, Sorry! alextashkМое решение предусматривает только 1 проход, т.е. ... - в 1000 раз быстрее. Быстрее сего-лишь в 168 раз. ( ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2016, 07:36 |
|
|
start [/forum/topic.php?fid=41&fpage=19&tid=1582152]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 285ms |
total: | 418ms |
0 / 0 |