Используйте Control.PointToClient , чтобы преобразовать точку из экранных координат в контрольные координаты. Если вам нужно пойти другим путем, используйте PointToScreen.
Хорошо, это моя идея. Я начну с создания old_table
, в которой есть X строк тем с полем sort_value.
Я хочу избежать множества операторов UPDATE в одной таблице, поэтому я буду периодически заменять старую таблицу со свежевычисленной таблицей. Насколько мне известно, MySQL не поддерживает синтаксис «заменить таблицу», поэтому каждые Y минут с помощью cron я буду создавать обновленную версию этой таблицы с именем new_sort_value
. Затем я выполню следующую последовательность команд:
old_table
new_table
to old_table
Кажется, это правильный подход?
Здесь необходимо учитывать ряд компромиссов. Вы уже намекали на них в своем вопросе. Своевременность и точность по сравнению с нагрузкой и масштабом.
Пакетирование вычислений - лучший способ уменьшить нагрузку и увеличить масштаб, если своевременность и точность не нужны, а система испытывает большую нагрузку на записи.
Вам действительно нужно сортировать изучить использование системы и определить, для каких областей необходимо оптимизировать. Оптимизация для записи имеет другие ограничения, чем оптимизация для чтения. То же самое в отношении своевременности или точности данных.
Определите, какие из них наиболее важны для вашего приложения, и сделайте соответствующий компромисс.