某种特定查询条件下的MYSQL效率问题
SELECT count(*) FROM 表1,表2 WHERE 表1.type='text' AND 表1.tid=表2.id AND 表2.user='b';
我在表1里建立了索引tid和type,但这句话的效率依然极烂,大约要执行2秒以上。
请问这种查询条件下,我该如何建立索引(或者改写语句)才能让查询效率高起来
Explain的结果如下
1 SIMPLE 表1 ALL tid,type NULL NULL NULL 114299 Using where
1 SIMPLE 表2 eq_ref PRIMARY PRIMARY 4 user.表1.tid 1 Using where
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
explain //你的SQL语句
就可以分析性能。上面的太过于笼统了。因为系统都不知道。。。
和join没太大的关系吧。反正基本都是笛卡尔积。left.right.都不会对性能有多大影响。
表2.user这个字段也要建立索引,否则对表1的tid和type建立索引也不会有太大提高
数据条数越多
count
效率越低下, 好像没什么好办法, 所以所有的计数都应该单独记录.我觉得使用
JOIN ... ON
语法查询效率会有所提升,按你的实际情况可用LEFT JOIN
或RIGHT JOIN
你可以试试
FROM t1, t2 这种是ANSI SQL-89的旧语法