Jump to content
  • 0

Оптимизация запроса с IN


hitenok
 Share

Question

Здравствуйте.

Столкнулся с проблемой.

Существует запрос вида SELECT name FROM user WHERE id IN (2,5,7,8,...)

где 2,5,7,8,... числа где-то 300 - 400 шт.

Можно ли оптимизировать данный запрос и получить время меньше чем при использовании IN?

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0
Если по id есть индекс то IN должен работать быстро, там ведь бинарный поиск идет.

Есть автоинкремент, а индекса нет. Когда ставлю индекс sql начинает ругаться на то, что у одного поля два назначения

Link to comment
Share on other sites

  • 0
нет, не primary key.

тип бд InnoDB, таблицы MyISAM

Ничего не понимаю, что у вас там за структура таблицы? :) У меня в тестовой БД выборка SELECT user FROM client WHERE id IN (1...1000) где id это pk происходит за 0.01.2142 сек

Поэтому оптимизировать видимо нужно структуру БД а не запрос

Edited by arez
Link to comment
Share on other sites

  • 0

Проверьте записи, поставьте всем уникальные значения и поставьте праймари. Или просто добавьте KEY. И как так вообще получилось, что а автоинкременте у вас появились повторяющиеся значения?

  • Like 1
Link to comment
Share on other sites

  • 0

Если ничего не путаю, есть вариант с созданием временной таблицы в памяти и запросом с inner join с ней, в каких-то тестах вроде быстрее выходило. Но поддерживаю предыдущих отвечающих — сначала нужно просто привести базу в человеческий вид. И лишь затем, если проблема останется, оптимизировать запрос.

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy