问题描述
我从SQL SERVER 2000导入一个表到MYSQL 5.x里面,大约有30万条记录。当执行SELECT * FROM tablename;时用时(484 ms),当加上一个where条件,查询就变得很慢:SELECT * FROM tablename where type=1; (18.549 sec) [type为int类型]MYSQL加上where条件就变得很慢。请问这是为什么呢?在SQL SERVER 2000查询这个表,效率很高的。
解决方案
首先你的type这个字段有没有索引SHOW INDEX FROM mydb.mytable如果有索引的话,看看有没有用到索引EXPLAIN SELECT * FROM tablename where type=1如果没有就创建一个索引MYSQL加上where条件就变得很慢。请问这是为什么呢?如果你有主键的话,主键本身就是索引,你没有用where就在用主键这个索引,当然快
解决方案二:
来学习下!
解决方案三:
建议你重新测试一下第二个语句不会比第一个慢这么多的因为即使你没有索引,两个语句也都是全表扫描,耗时应该都一样慢。其中第一个没有where的查询,耗时仅484ms,重测一下。至于优化,参照楼上建议。
时间: 2024-10-08 01:11:53