【发布时间】:2015-10-04 07:33:00
【问题描述】:
我正在使用 InnoDb 存储引擎开发 mysql 数据库。 我的表结构如下:
表名:archiveincomingsms
索引详情:archiveincomingsms
表名称:archiveoutgoingsms
索引详细信息:archiveoutgoingsms
以上是我的表结构及其索引详细信息!
两个表分别至少有超过 10 亿条记录(行)。
现在的问题是,当我想执行以下 SqlQuery 时:
( SELECT id AS ID, `recieved_datetime` `Date`, 'MT' AS Type, src_adress AS Msisdn,
TEXT as text, CHAR_LENGTH(TEXT) AS QtyOfSymbols, 'OK' AS `Status`
FROM archiveincomingsms
WHERE 1=1
AND recieved_datetime BETWEEN '2015-06-14 00:00:00'
AND '2015-07-14 23:59:59'
)
UNION ALL
( SELECT id AS ID, `send_date` `Date`, 'MO' AS Type, scr_adress AS Msisdn,
TEXT as text, CHAR_LENGTH(TEXT) AS QtyOfSymbols, 'OK' AS `Status`
FROM archiveoutgoingsms
WHERE 1=1
AND send_date BETWEEN '2015-06-14 00:00:00'
AND '2015-07-14 23:59:59'
)
ORDER BY `Date` ASC
LIMIT 0 ,100
以上查询需要超过 30 秒的时间才能从表中获取数据。 另一个是我也必须为了分页目的计算行数,而且它也需要超过 30 秒的时间。
总体而言,执行时间超过 1 分钟。 有什么合适的方法来优化时间吗? 我必须减少到最多 5 秒。 !怎么可能? 我正在使用mysql数据库!
【问题讨论】:
标签: php mysql sql database optimization