V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
daijia1123
V2EX  ›  MySQL

如果列出“节点收藏”中对应的主题,如何书写最有效率的 SQL?

  •  
  •   daijia1123 · 2015-05-11 17:13:24 +08:00 · 2824 次点击
    这是一个创建于 3492 天前的主题,其中的信息可能已经有所发展或是发生改变。
    当前节点收藏中是列出收藏的节点,点击节点后才能查看相应主题。
    如果想进入后,直接按时间顺序列出收藏节点的相应主题该如何做最有效率?SELECT * FROM Topics WHERE id IN (SELECT id FROM nodes WHERE userid=uid),这种方式感觉效率不会高。
    数据库结构是否也有特别需要注意的地方(除了索引等)?
    3 条回复    2015-05-11 17:31:16 +08:00
    anoymoux
        1
    anoymoux  
       2015-05-11 17:30:20 +08:00   ❤️ 1
    SELECT * FROM Topics t,nodes n WHERE t.id =n.id and n.userid=uid
    anoymoux
        2
    anoymoux  
       2015-05-11 17:30:49 +08:00   ❤️ 1
    SELECT t.* FROM Topics t,nodes n WHERE t.id =n.id and n.userid=uid
    fangjinmin
        3
    fangjinmin  
       2015-05-11 17:31:16 +08:00   ❤️ 1
    设计上没有什么问题。问题是你用了子查询,一般来说不会快。这样会好一些,select * from topics join nodes on (topics.id = nodes.id) where nodes.userid=uid,然后nodes的userid和id都加上索引。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2628 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:08 · PVG 18:08 · LAX 02:08 · JFK 05:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.