mysql - 我怎样才能加快查询?

标签 mysql google-maps database-design

我创建了一个表:

    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/

相关文章:

java - 如何从连接mysql中的两个表中选择特定范围的值?

mysql - 获取 2 个表中的最后 5 个帖子

java - 当我打开 map Activity 时自动打开 GPS

数据库关系问题

Php/MySQL 随机数据(音高)序列

java - 沮丧.. lastLocation.getLatitude() 将设置文本但不会启动双重。为此使用 google api

javascript - Google map API 和 HTML 5

database-design - NOSQL数据库设计

ruby-on-rails - 如何在 Ruby on Rails 中有效地处理多个数据库表

php - 插入数据到外键列