【发布时间】:2015-07-30 22:25:12
【问题描述】:
这是我的查询:
SELECT col1, col2, col3, col4, col5, col6,col7, col8,..,col18
FROM table1
WHERE col1= 'val' and col7='Y' and col16='203' OR col16='201' order by col4 desc
我不知道是什么让这个查询变慢了,
无论是 order by 还是 where 子句...
也正确添加了索引,但仍然很慢。
我正在使用 JSP + STRUTS + EJB2.0 + MYSQL。 table1 有超过 50 万条记录。 如何优化查询或提高执行速度的其他可能性?
表结构
col1 varchar(20) NO PRI
col2 varchar(50) NO PRI
col3 varchar(50) YES [NULL]
col4 varchar(20) YES [NULL]
col5 varchar(6) YES [NULL]
col6 varchar(20) YES [NULL]
col7 varchar(1) YES [NULL]
col8 mediumtext YES [NULL]
col9 mediumtext YES [NULL]
col10 mediumtext YES [NULL]
col11 mediumtext YES [NULL]
col12 mediumtext YES [NULL]
col13 mediumtext YES [NULL]
col14 mediumtext YES [NULL]
col15 mediumtext YES [NULL]
col16 varchar(20) YES [NULL]
col17 varchar(50) YES [NULL]
col18 varchar(5) YES [NULL]
col19 varchar(5) YES [NULL]
col20 varchar(5) YES [NULL]
col21 text YES [NULL]
col 22 text YES [NULL]
col23 text YES [NULL]
col24 varchar(5) YES [NULL]
col25 int(11) YES [NULL]
【问题讨论】:
-
表定义,说明方案
-
这个查询应该返回多少行?使您的查询变慢的是
order by,而不是真正的where条件 -
它从50万条记录中返回所有满足条件的记录
-
一般有多少条记录满足条件?
-
如果您获取 500000 条记录,那么大约 10000 条记录 - 对于条件 col1= 'val' 的 10000 条记录 7000 条条件的记录 col7='Y' 的 7000 条记录 1000 条条件的记录 col16=' 6000 条记录中的 209 条记录 cpndition col16='201' 的 2000 条记录,因此最终输出大约为 3000 条记录
标签: java mysql sql performance