Moderator: Telakh
Shaman wrote:Подскажите пожалуйста sql запрос на уменьшение общего колличесва деревье на сервере?
Sfinks wrote:А если серьезно? В базе есть forest в котором очень много деревьем <40Q которых при желание хотелось бы удалить.
Есть ли какое нибудь рациональное решение этому?
Это не только поможет в развитие но и так же думаю повысить производительность и скорость сервера за счет уменьшения нагрузки на него.
И всего что нашел известно, что простое удаление из базы привело к тому что пропали все деревья на сервере
DiWorm wrote:А по факту, удалять по квалити = плохо. Нужен адекватный и быстрый скрипт на выборку , например 30% базы деревьев и удаления ее.
Arhi wrote:DiWorm wrote:А по факту, удалять по квалити = плохо. Нужен адекватный и быстрый скрипт на выборку , например 30% базы деревьев и удаления ее.
Удалять по forest quality = хорошо.
до 30-ки качества деревья не представляют особую значимость, а fps подрастет.
Визуально конечно лес проредиться, но не критично. Он все так же и останется лесом, только опушки гор немного полысеют. Хотя и удалятся примерно 75% всех деревьев.
тем более лес себя продолжит восполнять.
И удалять нужно из tbl forest и также:
1. либо записывать в tbl forest_patch строчку об удалении используя функцию f_addForestPatch (которая автоматом сделает update terrain_blocks )
2. либо удалять строчку(если forest quality=0 то 2 строчки) в tbl forest_patch и проводить пересчет версий и делать update terrain_blocks
DELETE forest, forest_patch
FROM forest, forest_patch
WHERE forest.GeoDataID = forest_patch.GeoDataID AND
forest.Quality < 80;
SET @c442 = 1;
SET @c443 = 1;
SET @c444 = 1;
SET @c445 = 1;
SET @c446 = 1;
SET @c447 = 1;
SET @c448 = 1;
SET @c449 = 1;
SET @c450 = 1;
UPDATE forest_patch
SET Version = @c442:=@c442+1
WHERE TerID = 442;
UPDATE forest_patch
SET Version = @c443:=@c443+1
WHERE TerID = 443;
UPDATE forest_patch
SET Version = @c444:=@c444+1
WHERE TerID = 444;
UPDATE forest_patch
SET Version = @c445:=@c445+1
WHERE TerID = 445;
UPDATE forest_patch
SET Version = @c446:=@c446+1
WHERE TerID = 446;
UPDATE forest_patch
SET Version = @c447:=@c447+1
WHERE TerID = 447;
UPDATE forest_patch
SET Version = @c448:=@c448+1
WHERE TerID = 448;
UPDATE forest_patch
SET Version = @c449:=@c449+1
WHERE TerID = 449;
UPDATE forest_patch
SET Version = @c450:=@c450+1
WHERE TerID = 450;
SET @c442 = (SELECT Max(Version) as max FROM forest_patch WHERE TerID = 442 ORDER BY TerID);
SET @c443 = (SELECT Max(Version) as max FROM forest_patch WHERE TerID = 443 ORDER BY TerID);
SET @c444 = (SELECT Max(Version) as max FROM forest_patch WHERE TerID = 444 ORDER BY TerID);
SET @c445 = (SELECT Max(Version) as max FROM forest_patch WHERE TerID = 445 ORDER BY TerID);
SET @c446 = (SELECT Max(Version) as max FROM forest_patch WHERE TerID = 446 ORDER BY TerID);
SET @c447 = (SELECT Max(Version) as max FROM forest_patch WHERE TerID = 447 ORDER BY TerID);
SET @c448 = (SELECT Max(Version) as max FROM forest_patch WHERE TerID = 448 ORDER BY TerID);
SET @c449 = (SELECT Max(Version) as max FROM forest_patch WHERE TerID = 449 ORDER BY TerID);
SET @c450 = (SELECT Max(Version) as max FROM forest_patch WHERE TerID = 450 ORDER BY TerID);
UPDATE terrain_blocks
SET ForestVersion = @c442
WHERE ID = 442;
UPDATE terrain_blocks
SET ForestVersion = @c443
WHERE ID = 443;
UPDATE terrain_blocks
SET ForestVersion = @c444
WHERE ID = 444;
UPDATE terrain_blocks
SET ForestVersion = @c445
WHERE ID = 445;
UPDATE terrain_blocks
SET ForestVersion = @c446
WHERE ID = 446;
UPDATE terrain_blocks
SET ForestVersion = @c447
WHERE ID = 447;
UPDATE terrain_blocks
SET ForestVersion = @c448
WHERE ID = 448;
UPDATE terrain_blocks
SET ForestVersion = @c449
WHERE ID = 449;
UPDATE terrain_blocks
SET ForestVersion = @c450
WHERE ID = 450;
Ziong18 wrote:Лови!
- Code: Select all
DELETE forest, forest_patch
FROM forest, forest_patch
WHERE forest.GeoDataID = forest_patch.GeoDataID AND
forest.Quality < 80;
SET @c442 = 1;
SET @c443 = 1;
SET @c444 = 1;
SET @c445 = 1;
SET @c446 = 1;
SET @c447 = 1;
SET @c448 = 1;
SET @c449 = 1;
SET @c450 = 1;
UPDATE forest_patch
SET Version = @c442:=@c442+1
WHERE TerID = 442;
UPDATE forest_patch
SET Version = @c443:=@c443+1
WHERE TerID = 443;
UPDATE forest_patch
SET Version = @c444:=@c444+1
WHERE TerID = 444;
UPDATE forest_patch
SET Version = @c445:=@c445+1
WHERE TerID = 445;
UPDATE forest_patch
SET Version = @c446:=@c446+1
WHERE TerID = 446;
UPDATE forest_patch
SET Version = @c447:=@c447+1
WHERE TerID = 447;
UPDATE forest_patch
SET Version = @c448:=@c448+1
WHERE TerID = 448;
UPDATE forest_patch
SET Version = @c449:=@c449+1
WHERE TerID = 449;
UPDATE forest_patch
SET Version = @c450:=@c450+1
WHERE TerID = 450;
SET @c442 = (SELECT Max(Version) as max FROM forest_patch WHERE TerID = 442 ORDER BY TerID);
SET @c443 = (SELECT Max(Version) as max FROM forest_patch WHERE TerID = 443 ORDER BY TerID);
SET @c444 = (SELECT Max(Version) as max FROM forest_patch WHERE TerID = 444 ORDER BY TerID);
SET @c445 = (SELECT Max(Version) as max FROM forest_patch WHERE TerID = 445 ORDER BY TerID);
SET @c446 = (SELECT Max(Version) as max FROM forest_patch WHERE TerID = 446 ORDER BY TerID);
SET @c447 = (SELECT Max(Version) as max FROM forest_patch WHERE TerID = 447 ORDER BY TerID);
SET @c448 = (SELECT Max(Version) as max FROM forest_patch WHERE TerID = 448 ORDER BY TerID);
SET @c449 = (SELECT Max(Version) as max FROM forest_patch WHERE TerID = 449 ORDER BY TerID);
SET @c450 = (SELECT Max(Version) as max FROM forest_patch WHERE TerID = 450 ORDER BY TerID);
UPDATE terrain_blocks
SET ForestVersion = @c442
WHERE ID = 442;
UPDATE terrain_blocks
SET ForestVersion = @c443
WHERE ID = 443;
UPDATE terrain_blocks
SET ForestVersion = @c444
WHERE ID = 444;
UPDATE terrain_blocks
SET ForestVersion = @c445
WHERE ID = 445;
UPDATE terrain_blocks
SET ForestVersion = @c446
WHERE ID = 446;
UPDATE terrain_blocks
SET ForestVersion = @c447
WHERE ID = 447;
UPDATE terrain_blocks
SET ForestVersion = @c448
WHERE ID = 448;
UPDATE terrain_blocks
SET ForestVersion = @c449
WHERE ID = 449;
UPDATE terrain_blocks
SET ForestVersion = @c450
WHERE ID = 450;
DiWorm wrote:
Интересный скрипт, можно поподробнее о значениях наичнающихся с @? Что это?
Sfinks wrote:Извините за глупый вопрос. Но как применить его на практике. Просто я с бд никогда до этого не работал.
Arhi wrote:DiWorm wrote:
Интересный скрипт, можно поподробнее о значениях наичнающихся с @? Что это?
Да обычная переменная для счетчика.
просто кто то, не заморачивался насчет циклов
Kinrara wrote:Добавил это скрипт в path.sql чет не помогло) Чтото не так сделал?