java - 如何优化缓慢的 Mysql SELECT 查询?

标签 java mysql sql performance

这是我的查询:

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/

相关文章:

java - Spring - 如何将一个 bean 注入(inject)到在运行时多次创建的类中?

php - 这个 MySQL 插入语句有什么问题?

sql - Flask/Sqlalchemy 的初始数据

sql - 将时间戳四舍五入到最接近的半小时而不遗漏丢失的数据

mysql - 将 IN 与子查询一起使用

java - 通过 Camel Blueprint 中的属性配置 SQL 数据源(在 Karaf 中)

java - 使用java提取*.b64文件

java - 从 Action 监听器中开始游戏

mysql - 基于一列访问两行,但也访问这些行的其他列

php - Orangehrm 3.3.3 在 Windows 上安装错误并使用 XAMPP