日韩性视频-久久久蜜桃-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秒的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 在线看a网站 | 国产欧美精品一区 | 啪啪自拍视频 | 中文字幕av免费在线观看 | 久久精品视频日本 | 特大巨交吊性xxxx | 国产一区精品在线观看 | 精东影业一区二区三区 | 日韩精品观看 | 永久免费av网站 | 性色av浪潮av | 一区二区在线不卡 | 综合激情久久 | 日本男人的天堂 | 亚洲久热 | 99精品在线看| 男人的天堂av网 | 亚洲图片在线视频 | 人禽高h交| 三年在线观看视频 | 国产一区美女 | 在线观看免费视频一区二区 | 久色网| 国产伦精品一区二区三区免费 | h片观看 | 激情深爱五月 | 91九色中文 | 中文字幕在线播放一区二区 | 麻豆影视 | 免费的污网站 | 美国av片 | 看全黄大色黄大片美女人 | 欧美日韩亚洲国产 | 欧美va在线观看 | 波多野结衣a v在线 欧洲免费av | 伊人网在线视频观看 | 777国产成人入口 | xvideos永久免费入口 | 国产欧美一区二区精品性色 | 亚洲日本在线观看视频 | 亚洲视频在线观看一区二区 | 亚洲第三色 | 国产主播自拍av | 精品人伦一区二区三区蜜桃网站 | 免费播放片大片 | 日韩成人在线看 | av国产成人 | 天天爽天天插 | 嘿咻视频在线观看 | 在线看免费毛片 | 亚洲精品久久久久久动漫器材一区 | 国产乱码精品一区二区三区五月婷 | 国产区一区二区三 | 日韩精品在线观看中文字幕 | 亚洲一一在线 | 开心激情av | 日韩一区二区三区在线免费观看 | 91在线短视频 | 激情一区 | 欧美在线天堂 | 制服丝袜一区二区三区 | 亚洲色婷婷一区二区三区 | 久久久久久一级片 | 午夜激情网站 | 91精品啪 | 噜噜色网 | 日韩人妻精品一区二区 | 国产一区二区三区免费观看视频 | 日韩一级在线播放 | 亚洲国内自拍 | 青草草在线视频 | 狠狠躁夜夜躁人人爽视频 | 国产激情第一页 | 黄色777| 欧美色成人 | 在线观看av黄色 | 五月天久久综合 | 国产一区二区三区在线播放无 | 在线观看免费国产视频 | 日本激情一区 | 国产sm调教一区二区 | 日韩在线观看视频一区二区 | 公侵犯人妻一区二区 | 亚洲开心网 | 一卡二卡在线视频 | 欧美黑吊大战白妞欧美大片 | 亚洲制服另类 | 少妇在线播放 | 欧美一区二区黄片 | 中文字幕av一区二区三区谷原希美 | 天天干狠狠干 | 亚洲人妻电影一区 | 国产十区 | 久久91亚洲精品中文字幕奶水 | xxxxⅹxxxhd日本8hd | 欧美啪视频| 亚洲春色av | 午夜在线观看一区 | av网在线 |