- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как удалить плохие SEO-ссылки и очистить ссылочную массу сайта
Применяем отклонение ссылок
Сервис Rookee
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Господа подскажите как решить лучше данную проблему:
есть таблица в sql в которую записываю данные, таблица постоянно увеличивается, а во время записи стоит проверка обычным SELECT на наличии схожего id_детали. Так вот, чем больше уже записей в таблице, тем медленней добавляются новые. Как можно максимально увеличить производительность?
Что значит "схожего"? Насколько схожего? Какой SQL диалект используется? Какой тип поля у `id_детали`?
Точное совпадение, если "324535" уже присутствует в базе, то с массива мы его записывать не будем, а перейдем к следующему элементу массива.
СУБД какая?
Вот так нужно проверять существование данных в таблице
поставить index на поле `id_детали`, и сделать ему тип int, если такое не стоит.
Тогда всё будет норм.
И да если много раз надо сделать insert, лучше это сделать одним запросом.
antyan, все уже реализовано за Вас. Никаких селектов не нужно.
Укажите необходимое поле как уникальное
Этого будет достаточно, чтобы INSERT не проходил. Никаких проверок выполнять не нужно, MySQL сам разберется.
sashka_, count в принципе очень ресурсозатратный запрос, да еще если в большой таблице ее выполнять. Поэтому Ваш запрос только усугубит ситуацию. Да и нужды в нем нет никакой.
Этого будет достаточно, чтобы INSERT не проходил. Никаких проверок выполнять не нужно, MySQL сам разберется.
Следующий будет вопрос, почему ошибка, когда деталь есть в базе ☝
Для вставки используем INSERT IGNORE
самое смешное когда окажется что id_детали в понимании ТС это артикул, или другая цифрено-буквенная маркировка детали.
sashka_, count в принципе очень ресурсозатратный запрос, да еще если в большой таблице ее выполнять. Поэтому Ваш запрос только усугубит ситуацию. Да и нужды в нем нет никакой.
Вы сильно ошибаетесь. Сам по себе count ни разу не ресурсозатратный, его функция состоит в том чтобы подсчитать количество соответствующих условию записей, ищет запись и инкрементирует переменную счетчик, проще быть не может. При прочих равных count будет быстрее
Вот так нужно проверять существование данных в таблице
а зачем здесь лишний count(*) ?
можно упростить запрос:
если запрос дал пустоту, то детали нет. можно даже не получать поле id из запроса...
а вообще, как сказали выше - уник. индекс
siv1987, не буду спорить. Тем более count(*).
P.S.: Поищите статью о тестах производительности count на хабре. Они удручают.