MySQLのページネーションクエリの最適化

最初にデータベーステストを作成し、次にテーブルデバイスを作成します(ここでは、効果を示すために複数のフィールドを作成します)。

CREATE  TABLE `devices`(
  ` id` VARCHAR255CHARACTERの SETの utf8のCOLLATE utf8_general_ci 、NOT  NULLの DEFAULTを '' 
  `TVName`のVARCHAR255CHARACTERの SET utf8のCOLLATE utf8_general_ci DEFAULT  NULL 
  ` TVModelNumber`のVARCHAR255CHARACTERの SET utf8でCOLLATE utf8_general_ci DEFAULT  NULL 
  `TVSerialNumber` varchar20CHARACTERの SET UTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  `TVRoomID` INT11DEFAULTの NULL 
  ` TVMACAddress`のVARCHAR17CHARACTERの SET UTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  `TVIPAddress` VARCHAR15CHARACTERの SET UTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  ` VSecureTVID ` varchar20文字 セットUTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  `type`がのVARCHAR50CHARACTERの SET UTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  ` PowerStatus`のVARCHAR20CHARACTERの SET UTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  `TVUniqueID`のVARCHAR255CHARACTERの SET UTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  `FirmwareId` int11DEFAULT  NULL 
  `CloneId` INT11DEFAULTの NULL 
  ` LastCloneRename` VARCHAR255CHARACTER  SET utf8のCOLLATE utf8_general_ci DEFAULT  " {\ "古い\":\ "不明\"、\ "新\":\"不明\ "} ' 
  ` Status` varchar30CHARACTER  SET utf8 COLLATE utf8_general_ci DEFAULT  NULL 
  `Progress` varchar30CHARACTER  SETUTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  `TVStatus`のテキスト 文字の SET UTF8のCOLLATEのutf8_general_ci、
  ` si_clone_Identifiers`のVARCHAR100CHARACTERの SET UTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  `si_firmware_Identifier` VARCHAR100CHARACTERの SET UTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  ` tv_clone_Identifiers` VARCHAR8000キャラクター セットUTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  `tv_firmware_Identifier`のVARCHAR100CHARACTERの SET UTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  ` success_siclone_Identifier`のVARCHAR50CHARACTERの SET UTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  `success_tvclone_Identifier`のVARCHAR50CHARACTERの SET UTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  `clone_color`VARCHAR50CHARACTER  SET UTF8 COLLATE utf8_general_ci DEFAULT  ' ブラック' 
  `fw_color` VARCHAR50CHARACTER  SET UTF8 COLLATE utf8_general_ci DEFAULT  ' ブラック' 
  ` CreatedDate`のVARCHAR30CHARACTERの SET UTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  `ModifiedDate` VARCHAR30キャラクター セットutf8のCOLLATE utf8_general_ci DEFAULT  NULL 
  `Lastonline` VARCHAR30CHARACTERの SET utf8のCOLLATE utf8_general_ci DEFAULT  NULL 
  ` clone_mode` VARCHAR10CHARACTERの SETの utf8のCOLLATE utf8_general_ci 、NOT  NULLの DEFAULT  ' アップグレード' 
  `upload_progress` VARCHAR10CHARACTERの SETの utf8でコレートutf8_general_ci DEFAULT  ' ST '
  `upload_session_id` VARCHAR45CHARACTERの SET UTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  ` upload_session_start` VARCHAR45CHARACTERの SET UTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  `upload_session_end` VARCHAR45CHARACTERの SET UTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  ` upload_session_status` VARCHAR45キャラクター セットUTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  `channel_color` VARCHAR45CHARACTERの SET UTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  ` app_color` VARCHAR45CHARACTERの SET UTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  `upgrade_type` VARCHAR45CHARACTERの SET UTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  `si_Identifiers` テキスト CHARACTER SETのUTF8のCOLLATEのutf8_general_ci、
  `networkInterfaceIp`のVARCHAR15CHARACTER  SET UTF8 COLLATE utf8_general_ci DEFAULT  NULL 
  ` clone_type` VARCHAR45CHARACTER  SET UTF8 COLLATE utf8_general_ci DEFAULT  ' なし' PRIMARY  KEY BTREE、使用( `id`)
   INDEX ` FirmwareIdを`(` FirmwareId`)USING BTREE、
   INDEX `CloneId`(` CloneId`)USING BTREE 
)ENGINE = InnoDB CHARACTER  SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT =コンパクト;

この表のデバイスに8000データを追加したいと思います。

SELECT * FROM `devices` limit 7000,10#0.015s ここで消費される時間は0.015sです

select * from `devices` where id>(select id from devices limit 7000,1)limit 10#0.002s ここで消費される時間は0.002sです

同じページングクエリ、異なる時間の消費


つづく...

おすすめ

転載: www.cnblogs.com/xumBlog/p/12708281.html