首页 文章

Mysql:优化索引

提问于
浏览
0

我安装了MySQL Tuner,这是报告的结果:

  • 启用慢查询日志以排除错误查询

  • 调整连接查询以始终使用索引

所以,我启用了慢查询日志,它报告了这些类型的查询:

SELECT u.PIN,u.name,u.lastname,u.id_country,t1.id_user_list,COUNT(t2.id_user_list)AS q1 FROM联系AS t1,联系AS t2,用户AS u WHERE t1.id_user = N AND t2 .id_user = t1.id_user_list AND u.id_user = t1.id_user_list GROUP BY t1.id_user_list ORDER BY name,lastname

和...

SELECT * FROM user WHERE city LIKE'S'和gender = N AND flg_pic = N AND flg_hidden = N AND flg_ban = N AND id_user!= N ORDER BY id_user DESC LIMIT N,N

我只需要一些关于表格优化的帮助,它们是:

  • contact

  • id_contact(int / primary index)

  • id_user(int / index)

  • id_user_list(int / index)

  • user

  • id_user(int / primary index)

  • name(varchar)

  • lastname(varchar)

  • PIN(varchar)

  • id_country(int)

  • city(varchar)

  • 性别(1或2)

  • flg_pic(1或0)

  • flg_hidden(1或0)

  • flg_ban(1或0)

我应该索引查询中使用的所有varchars(WHERE和ORDER)吗?谢谢你的帮助 .

1 回答

  • 1

    您应该运行explain analyze以更好地了解查询中最昂贵的部分,并围绕这些字段进行索引或优化 .

    例如:

    explain analyze SELECT * FROM user WHERE city LIKE 'S' AND gender = N AND flg_pic = N AND flg_hidden = N AND flg_ban = N AND id_user != N ORDER BY id_user DESC LIMIT N,N
    

    并且您应该优先考虑那些运行最频繁且速度最慢的慢查询

相关问题