Я создал таблицу:Как я могу ускорить запрос?
CREATE TABLE IF NOT EXISTS `markersStorage2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
`surname` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
`id_vk` int(10) NOT NULL,
`activity_link` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
`message` varchar(256) COLLATE utf8_unicode_ci NOT NULL,
`lat` float(10,6) NOT NULL,
`lng` float(10,6) NOT NULL,
`type` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
`id_tile` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
Я использую его для хранения Google Maps маркеров плиток.
Эта таблица часто обновляется, я имею в виду, что новые маркеры добавляются в него
Я использую этот запрос, много:
SELECT id, lat,lng FROM markersStorage2 WHERE id_tile LIKE '$tileNumber%'
Как я ускорить этот запрос? Может быть, мне нужно создать другую таблицу или реорганизовать эту?
плитки пронумерованы, как здесь:
http://msdn.microsoft.com/en-us/library/bb259689.aspx
Пример: Я использую максимальный масштаб 15, так что поэтому, когда я добавить новый маркер к БД сервера
определить, в котором плитка этот маркер будет располагаться, например, мы получим что-л, как этот
id_tile = 002013111032032
Все маркеры не имеют id_tile с 15 номерами не меньше не больше.
Позже, когда пользователь взгляд через тайлов испрашивается через AJAX, но это плитки может
быть на разных уровнях масштабирования и, например, мы получим этот запрос:
SELECT id, lat,lng FROM markersStorage2 WHERE id_tile LIKE '002013111032%'
Таким образом, используя этот Я могу получить все маркеры в этой большой плитки.
В чем состоит deos id_tile? Возможно, поле может быть разделено или что-то, чтобы избежать поиска по шаблону '%'? –
'LIKE '$ tileNumber%''? что вы делаете? это не имеет большого смысла. –
Я отредактировал вопрос, так что теперь я думаю, что это более понятно. – knightOfSpring