我创建了一个表:
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
我用它按图 block 存储谷歌地图标记。
这个表经常更新,我的意思是添加了新的标记
我经常使用这个查询:
SELECT id, lat,lng FROM markersStorage2 WHERE id_tile LIKE '$tileNumber%'
我怎样才能加快这个查询?也许我需要创建另一个表或重组这个表?
图 block 的编号如下:
http://msdn.microsoft.com/en-us/library/bb259689.aspx
示例:我正在使用最大缩放 15,因此当我将新标记添加到数据库服务器时
确定这个标记将位于哪个图 block 中,例如我们将得到这样的 smth
id_tile = 002013111032032
所有标记都有 id_tile 和 15 个数字,不多不少。
稍后当用户浏览 map 时,瓦片是通过 ajax 请求的,但是这个瓦片可以
处于不同的缩放级别,例如我们将收到此请求:
SELECT id, lat,lng FROM markersStorage2 WHERE id_tile LIKE '002013111032%'
所以使用这个请求我可以获得这个大图 block 中的所有标记。
最佳答案
尝试以下操作:
ALTER TABLE `markersstorage2` ADD INDEX (`id_tile` ) ;
关于mysql - 我怎样才能加快查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10269561/