Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Быстрый поиск в БД
|
|||
|---|---|---|---|
|
#18+
Всем привет. Столкнулся с проблемой поиска в таблице с большим кол-вом записей. Дело в том, то у меня есть парсер который я написал на PHP который парсит данные из XML файла, а потом обновляет данные в БД. На данный момент уже набралось около 57тыс. записей в таблице. И вот я начинаю парсить из XML и там тоже около 50тыс., т.е я беру прохожусь построчно : Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Но при проходе по строке в XML файле мне нужно обратится в БД и посмотреть, если такой записи нет тогда вставить новую, если есть то обновить в ней данные. Я в цикл который выше добавил сначала Код: php 1. 2. 3. 4. Раньше когда записей было не много, то это срабатывало, а сейчас нет. скрипт просто подвисает. Я решил искать не в БД а в массиве, я обращаюсь только один раз и получаю все данные и пишу их в глобальную переменную до цикла который выше: Код: php 1. 2. 3. а потом уже с помощью функции в цикле который выше ищу: Код: php 1. это сама функция поиска в многомерном массиве Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. но оно все равно подвисает, да и память грузит нехило. Посоветуйте что нибудь. Скорее всего нужно оптимизировать как нибудь БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 16:38 |
|
||
|
Быстрый поиск в БД
|
|||
|---|---|---|---|
|
#18+
Здесь форум по MySQL, а не по PHP. Модератор: Тема перенесена из форума "MySQL". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 16:45 |
|
||
|
Быстрый поиск в БД
|
|||
|---|---|---|---|
|
#18+
paha4444но оно все равно подвисает, да и память грузит нехило. Посоветуйте что нибудь. Скорее всего нужно оптимизировать как нибудь БД. Для начала: 1) Навесить нужные индексы на таблицу. 2) Организовать вставку/обновление в хранимой процедуре (навешивание индексов это не отменяет!). По ходу тебе нужен индекс на поле apartment_id. P.S. И да, ты уверен, что тормозит именно БД, а не парсинг XML? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 17:40 |
|
||
|
Быстрый поиск в БД
|
|||
|---|---|---|---|
|
#18+
1.Создаешь временную таблицу. 2. Заливаешь данные в нее 3. Делаешь запрос Join к первой таблице. Заливаешь новые записи. 4. Делаешь запрос Join^ к первой таблице. Заливаешь записи которые были. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 17:50 |
|
||
|
Быстрый поиск в БД
|
|||
|---|---|---|---|
|
#18+
paha4444оно все равно подвисает, да и память грузит нехилоЭто не описание проблемы. paha4444Посоветуйте что нибудь. Скорее всего нужно оптимизировать как нибудь БД.Вполне вероятно, раз Вы подошли к этому. В форуме по используемой СУБД покажите структуру данных, базы, таблиц, связи. И, разумеется запросы и алгоритмы, которые являются проблемными. Код на PHP постить в форуме по СУБД не следует. Модератор: Насколько понимаю, по части PHP-кода вопросов нет. Засим закрываю топик. -- vkle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2015, 20:04 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=53&tid=1461431]: |
0ms |
get settings: |
6ms |
get forum list: |
23ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
20ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 225ms |
| total: | 392ms |

| 0 / 0 |
