这是我的查询:
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]
最佳答案
I don't know what it is making this query slow, whether order by, or conditions..
如果它们是通常的姓名、电话号码、电子邮件之类的东西(而不是文档),那么 50 万条记录应该可以放入内存中。因此,如果它 - 非常 - 慢,那就有问题了。
properly added index also,still slow.
哪些列被索引了?您需要按最有效过滤的列进行索引。例如,如果 col2 是对"is"或“否”问题的回答,则按它编制索引将无济于事。
关于java - 如何优化缓慢的 Mysql SELECT 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30319746/