自認為不是很復雜的陳述句,但是執行時間很長啊,陳述句單獨拿出來執行是7s,放在存盤程序里執行是44s,真的不能接受啊
執行陳述句是
SELECT
a.sexs AS sex,
IFNULL(b.percentage,0)AS percentage
FROM (
SELECT 'male' AS sexs
UNION ALL
SELECT 'female'
) a
LEFT JOIN
(
SELECT
P.SEX,
COUNT(1) /
(15315)AS percentage
FROM player_login_logout_log A
LEFT JOIN player_create_log P ON A.`role_id`=P.ROLE_ID
WHERE player_state='login'
-- AND IF(_system_type IS NULL ,0=0,a.system_type=_system_type) AND IF(_platform IS NULL,0=0,a.platform=_platform) AND IF(_zone_id IS NULL ,0=0,a.zone_id=_zone_id)
AND LEFT(A.time,10) BETWEEN '2018-04-01' AND '2018-04-30'
GROUP BY P.SEX
)b ON a.sexs=b.sex;
執行計劃是
真的不知道
紅圈圈是咋來的uj5u.com熱心網友回復:
player ,這兩張表的索引情況,說一下uj5u.com熱心網友回復:
是這樣的表 player_login_logout_log A 的索引是這樣的

表 player_create_log P 的索引是這樣的

希望您的幫助啊
uj5u.com熱心網友回復:
簡單看了一下,2個表應該都沒走索引,資料量大了肯定慢,LEFT JOIN player_create_log P ON A.`role_id`=P.ROLE_ID
這個P表的role_id建個索引試試
最簡單的就是自己分析了,在SSMS里,按右鍵,選擇“包含實際的執行計劃”
看看走的什么索引,不懂可以 截圖發出來看看
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/90950.html
標籤:MySQL
上一篇:為什么這個陳述句不使用user_id和時間欄位的索引?
下一篇:kettle抽取sybase
