日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 前30秒_mysql – 简单查询需要15-30秒

發布時間:2025/4/5 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 前30秒_mysql – 简单查询需要15-30秒 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以下查詢非常簡單.它從消息表中選擇最后20條記錄,以便在分頁方案中使用.第一次運行此查詢時,需要15到30秒.后續運行只需不到一秒鐘(我預計會涉及一些緩存).我試圖確定為什么第一次這么長時間.

這是查詢:

SELECT DISTINCT ID,List,`From`,Subject, UNIX_TIMESTAMP(MsgDate) AS FmtDate

FROM messages

WHERE List='general'

ORDER BY MsgDate

LIMIT 17290,20;

MySQL版本:4.0.26-log

這是表格:

messages CREATE TABLE `messages` (

`ID` int(10) unsigned NOT NULL auto_increment,

`List` varchar(10) NOT NULL default '',

`MessageId` varchar(128) NOT NULL default '',

`From` varchar(128) NOT NULL default '',

`Subject` varchar(128) NOT NULL default '',

`MsgDate` datetime NOT NULL default '0000-00-00 00:00:00',

`TextBody` longtext NOT NULL,

`HtmlBody` longtext NOT NULL,

`Headers` text NOT NULL,

`UserID` int(10) unsigned default NULL,

PRIMARY KEY (`ID`),

UNIQUE KEY `List` (`List`,`MsgDate`,`MessageId`),

KEY `From` (`From`),

KEY `UserID` (`UserID`,`List`,`MsgDate`),

KEY `MsgDate` (`MsgDate`),

KEY `ListOnly` (`List`)

) TYPE=MyISAM ROW_FORMAT=DYNAMIC

這是解釋:

table type possible_keys key key_len ref rows Extra

------ ------ ------------- -------- ------- ------ ------ --------------------------------------------

m ref List,ListOnly ListOnly 10 const 18002 Using where; Using temporary; Using filesort

當我在所有相關列上都有索引時,為什么使用filesort?我添加了ListOnly索引,看看它是否有用.我原本以為List索引會處理列表選擇和MsgDate上的排序,但事實并非如此.現在我添加了ListOnly索引,這是它使用的索引,但它仍然在MsgDate上執行一個文件排序,這是我懷疑花了這么長時間.

我嘗試使用FORCE INDEX如下:

SELECT DISTINCT ID,List,`From`,Subject, UNIX_TIMESTAMP(MsgDate) AS FmtDate

FROM messages

FORCE INDEX (List)

WHERE List='general'

ORDER BY MsgDate

LIMIT 17290,20;

這似乎迫使MySQL使用索引,但它根本不會加速查詢.

以下是此查詢的說明:

table type possible_keys key key_len ref rows Extra

------ ------ ------------- ------ ------- ------ ------ ----------------------------

m ref List List 10 const 18002 Using where; Using temporary

更新:

我從查詢中刪除了DISTINCT.它根本沒有幫助.

我刪除了UNIX_TIMESTAMP調用.它也沒有影響性能.

我在我的PHP代碼中做了一個特例,這樣如果我檢測到用戶正在查看結果的最后一頁,我會添加一個WHERE子句,它只返回結果的最后7天:

SELECT m.ID,List,From,Subject,MsgDate

FROM messages

WHERE MsgDate>='2009-11-15'

ORDER BY MsgDate DESC

LIMIT 20

這要快得多.但是,只要我導航到另一個結果頁面,它就必須使用舊的SQL并且需要很長時間才能執行.我想不出一個實用,現實的方法來為所有頁面執行此操作.此外,這種特殊情況使我的PHP代碼更加復雜.

奇怪的是,只有第一次運行原始查詢需要很長時間.后續運行相同的查詢或顯示不同結果頁面的查詢(即,只有LIMIT子句發生變化)非常快.如果查詢尚未運行約5分鐘,則查詢會再次變慢.

解:

我想出的最佳解決方案是基于Jason Orendorff和Juliet的想法.

首先,我確定當前頁面是否更接近總頁數的開頭或結尾.如果它更接近結尾,我使用ORDER BY MsgDate DESC,應用適當的限制,然后反轉返回記錄的順序.

這使得檢索頁面接近結果集的開頭或結尾的速度要快得多(第一次現在需要4-5秒而不是15-30秒).如果用戶想要導航到中間附近的頁面(當前在第430頁左右),那么速度可能會下降.但那是一種罕見的情況.

因此,雖然似乎沒有完美的解決方案,但這比大多數情況要好得多.

謝謝你,杰森和朱麗葉.

總結

以上是生活随笔為你收集整理的mysql 前30秒_mysql – 简单查询需要15-30秒的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 先锋影音久久 | 免费av网站在线播放 | av导航网| 久久99深爱久久99精品 | 精品视频99 | 一级黄色在线播放 | 欧美日本激情 | 超碰福利在线观看 | 一区二区男女 | 精东影业一区二区三区 | 一区二区视频在线观看 | 国产网红主播精品av | 久久观看 | 精品视频站长推荐 | 超碰蜜臀 | 91蝌蚪视频在线 | 国产大片在线观看 | 国产视频福利在线 | 后宫秀女调教(高h,np) | 久久99视频精品 | 韩国三级久久 | 国模无码视频一区二区三区 | 午夜888 | 中文字幕精品视频在线观看 | va视频在线| 好色婷婷| 亚洲色婷婷久久精品av蜜桃 | 日韩免费在线观看 | 欧美日韩一级片在线观看 | 夜夜嗷| 欧美黄色一区二区三区 | 1024福利| 亚洲中文无码av在线 | 成人在线观看网站 | 国产又粗又猛又爽 | 国产八区 | 国产自偷自拍 | 欧美性大战久久久久久 | 一区二区三区久久 | 全程粗话对白视频videos | 中文字幕永久在线视频 | 9999re| 丰满岳妇乱一区二区三区 | 亚洲成人xxx| 不卡的av电影 | 精产国品一区二区 | 国产精品6 | 天天干一干 | 操碰av| 美女伦理水蜜桃4 | 国产精品久久久久久免费 | 成人午夜免费毛片 | 精品影片一区二区入口 | 久久婷婷精品 | 亚洲奶水xxxx哺乳期 | 成在线人免费视频 | 国产999在线 | 午夜久久久 | 成都4电影免费高清 | 日韩av高清在线观看 | 日韩a级片在线观看 | 亚洲另类网站 | 亚洲视频黄 | 欧美电影一区 | 亚洲青青草 | 高h奶汁双性受1v1 | 精国产品一区二区三区a片 国产精品第一 | 91丝袜在线 | 国产一区在线视频观看 | 无码人妻丰满熟妇区毛片蜜桃精品 | 美腿丝袜一区二区三区 | 自拍一级片| 久久久久国产精品夜夜夜夜夜 | 国产成年人网站 | 香蕉久久精品日日躁夜夜躁 | 国产人久久人人人人爽 | 国产精品久久久久久久久久久久 | 黄色国产视频 | 色猫咪av在线 | 欧日韩在线视频 | 你懂得在线视频 | 亚洲综合套图 | 99草视频 | 欧美性极品xxxx做受 | 春宵av| www.色香蕉| 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产乱国产乱老熟 | 国产精品视频播放 | 免费在线观看中文字幕 | 午夜色综合 | 欧美日韩视频一区二区三区 | 91午夜精品亚洲一区二区三区 | 欧美xxxx888 | 中文字幕123区 | 第一次破处视频 | 国产超91 | 精品成在人线av无码免费看 | 狠狠婷婷|