Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте. есть таблица с 5млн. записей. У нее есть поле id(PK). Мне нужно удалить например 5 id. Как будет быстрее?
DELETE FROM tabl WHERE id in(2,34,5,6,7)
------------------------------------------------
DELETE FROM tabl WHERE id=2 LIMIT 1;
DELETE FROM tabl WHERE id=34 LIMIT 1;
DELETE FROM tabl WHERE id=5 LIMIT 1;
DELETE FROM tabl WHERE id=6 LIMIT 1;
DELETE FROM tabl WHERE id=7 LIMIT 1;
------------------------------------------------
И если можно объясните как работает изнутри конструкция IN? Заранее благодарен.
Неактивен
Будут работать приблизительно с одной скоростью, но первое проще. IN работает
так же, как и = (т.е. может использовать индекс), но результатом индекса будет
RANGE, поэтому последующие части индекса использоваться не будут.
Ну и во втором случае LIMIT лишние, если id — это уникальные ключи.
Неактивен
но результатом индекса будет
RANGE, поэтому последующие части индекса использоваться не будут
Если можно, разъясните пожалуйста подробнее.
Неактивен
Допустим, у Вас есть таблица со столбцами a и b и с индексом на (a,b).
В случае, когда Вы делаете запрос WHERE a = 1 AND b = 2, используется
индекс целиком. В случае, когда Вы делаете WHERE a IN (1, 2) AND b = 2,
используется только первая часть индекса.
Неактивен