0

テーブルを作成しました:

    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 

タイルごとにグーグルマップマーカーを保存するために使用しています。

このテーブルは頻繁に更新されます。つまり、新しいマーカーが追加されます。

私はこのクエリをよく使用しています:

    SELECT id, lat,lng FROM markersStorage2 WHERE id_tile LIKE '$tileNumber%'

このクエリを高速化するにはどうすればよいですか?たぶん私は別のテーブルを作成するか、これを再編成する必要がありますか?

タイルには次のように番号が付けられます。

http://msdn.microsoft.com/en-us/library/bb259689.aspx

例:最大ズーム15を使用しているため、サーバーをDBに新しいマーカーを追加すると

このマーカーがどのタイルに配置されるかを決定します。たとえば、次のようにsmthを取得します。

    id_tile = 002013111032032

すべてのマーカーには、15個以上の数字を持つid_tileがあります。

後でユーザーがマップを見ると、タイルはajaxを介して要求されていますが、このタイルは

ズームレベルを変えると、たとえば次のリクエストが表示されます。

       SELECT id, lat,lng FROM markersStorage2 WHERE id_tile LIKE '002013111032%'

したがって、このリクエストを使用すると、この大きなタイルのすべてのマーカーを取得できます。

4

2 に答える 2

5

次のことを試してください。

ALTER TABLE  `markersstorage2` ADD INDEX (`id_tile` ) ;
于 2012-04-22T16:06:32.220 に答える
3

id_tileフィールドにインデックスを付ける必要があります。

ALTER TABLE `markersstorage2`  ADD INDEX `id_tile` (`id_tile`);

クエリがインデックスを使用しているかどうかを確認できます。

SELECT id、lat、lngFROMmarkersStorage2を説明するWHEREid_tileLIKE '3%'

インデックスなし

"id"; "select_type"; "table"; "type"; "possible_keys"; "key"; "key_len"; "ref"; "rows"; "Extra" "1"; "SIMPLE"; "markersStorage2" ; "ALL"; NULL; NULL; NULL; NULL;"7";"どこで使用するか"

インデックス付き

"id"; "select_type"; "table"; "type"; "possible_keys"; "key"; "key_len"; "ref"; "rows"; "Extra" "1"; "SIMPLE"; "markersStorage2" ; "range"; "id_tile"; "id_tile"; "47"; NULL; "3"; "Using where"

于 2012-04-22T16:11:48.667 に答える