Как я могу выбрать строки MySQL на основе идентификатора? Есть ли влияние на производительность? - PullRequest
0 голосов
/ 16 апреля 2011

У меня есть список и я хочу выбрать строки по их идентификатору. влияют ли это на производительность запросов и лучше ли это делать.

Ответы [ 3 ]

1 голос
/ 16 апреля 2011

Если у вас есть список и вы выполняете запрос следующего типа:

select * from your_table where id = 123
select * from your_table where id = 345
select * from your_table where id = 679

для каждого из элементов вашего списка, вы в конечном итоге будете выполнять множество запросов - которые, какВы можете догадаться, что это не очень хорошо для производительности.


Идея может состоять в том, чтобы сгруппировать эти запросы, например так:

select * from your_table where id in (123, 345, 679)

Чтобы выполнять меньше запросов: только один здесь,вместо трех.

Это означает немного больше логики в вашем коде, конечно, для получения результатов из базы данных;но это, как правило, поможет, когда речь заходит о производительности.


Обратите внимание: вы не должны использовать слишком много идентификаторов в одном предложении in() - что означает, что вы можете в конечном итоге сделать несколько запросов -- каждый работает с несколькими идентификаторами.

0 голосов
/ 16 апреля 2011

Если у вас есть список идентификаторов строк, вы просто делаете следующее:

SELECT *
  FROM table
 WHERE id IN (1, 2, 3, 4)

Это самый быстрый способ получения строк по их идентификаторам.

0 голосов
/ 16 апреля 2011
SELECT * FROM table WHERE id IN (1,2,3,4)

Этот запрос будет достаточно быстрым, так как у вас есть индекс, охватывающий id в его самой левой части.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...