Извините, я впервые пользуюсь этим форумом. Очевидно, что люди могут редактировать мой пост, который, хотя и полезен, извлек некоторую информацию.
Я постараюсь сделать это более понятным.
Я использую SQL Compact 3.5 в качестве локальной базы данных.
Программа написана на VB.NET.
Проблема в том, что запрос одного из моих таблиц занимает слишком много времени.
Стол игрока имеет, помимо прочего, id
, skill
, school
, weight
, starter
.
id
идентификатор игрока
skill
это уровень мастерства игрока
school
- это внешний ключ, указывающий на идентификатор школьного стола
weight
- это один из 14 разных номеров
Я пытаюсь установить значение starter
= 'true' для игрока с наивысшим навыком при заданном весе для данной школы.
Так что если в школе 100 игроков, то будет 14 стартеров, по одному на каждый вес.
В таблице игроков насчитывается 170 000 игроков, каждый из которых имеет 1 из 14 различных весов, и каждый из них принадлежит 1 из 4500 школ.
Кто-то прокомментировал ниже и показал это утверждение, которое, кажется, находится на правильном пути. Я новичок и пока не реализовал его.
"UPDATE p " &
"SET starter = 'TRUE' " &
"FROM player p" &
"JOIN (" &
"SELECT DISTINCT school, weight, MAX(skill) AS MaxSkill " &
"FROM player " &
"GROUP BY school, weight" &
") q ON q.school = p.school AND q.weight = p.weight AND q.MaxSkill =
p.skill"