Задать вопрос
swanrnd
@swanrnd
Издатель HTML5 игр

Как оптимизировать запрос?

Такой запрос
SELECT x FROM dbo.boards_map WHERE (x=192 AND y=18) or (x=191 AND y=17) or (x=190 AND y=16) or (x=189 AND y=15) or (x=188 AND y=14) or (x=187 AND y=13) or (x=186 AND y=12) or (x=185 AND y=11) or (x=184 AND y=10) or (x=183 AND y=10) or (x=182 AND y=10) or (x=181 AND y=10) or (x=180 AND y=10) or (x=179 AND y=10) or (x=178 AND y=10) or (x=177 AND y=10) or (x=176 AND y=10) or (x=175 AND y=10) or (x=174 AND y=10) or (x=173 AND y=10) or (x=172 AND y=10) or (x=171 AND y=10) or (x=170 AND y=10) or (x=169 AND y=10) or (x=168 AND y=10) ;


Работает так:
1) если все хорошо, то он пустой.
2) если все плохо, то что-то вернет.

У меня стоит кластиризованный уникальный индекс по x+y.
Что еще можно сделать?

d635fb871ba94872a4f9968b7dbc086e.png
  • Вопрос задан
  • 102 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@d-stream
Готовые решения - не подаю, но...
Можно попробовать вот так:
declare @filter table(x int, y int, primary key(x,y))
insert into @filter (x,y) values (192,18),(191,17).....

select * from dbo.boards_map inner join @filter as f on f.x=dbo.boards_map.x and f.y=dbo.boards_map.y
Ответ написан
Комментировать
@vintage
Как минимум стоит возвращать не записи, а их число.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы