select 
novel_booklist.ID AS aID,
 novel_chapter.ID AS bID,
 novel_category.ID AS cID,
 novel_booklist.Author,
 novel_booklist.Category,
 novel_chapter.BookName,
 novel_chapter.ChapterName,
 novel_chapter.ID,
 novel_chapter.UpTime
FROM
novel_chapter,
novel_booklist,
novel_category
WHERE
novel_chapter.BookName = novel_booklist.BookName
AND novel_booklist.Category = novel_category.CategoryName
ORDER BY
novel_chapter.UpTime DESC
LIMIT 13这速度太慢了,也不能分开写,因为分开写就要select 100次以上,应该如何优化,各位有何良策

解决方案 »

  1.   

    explain select  
    novel_booklist.ID AS aID,
      novel_chapter.ID AS bID,
      novel_category.ID AS cID,
      novel_booklist.Author,
      novel_booklist.Category,
      novel_chapter.BookName,
      novel_chapter.ChapterName,
      novel_chapter.ID,
      novel_chapter.UpTime
    FROM
    novel_chapter,
    novel_booklist,
    novel_category
    WHERE
    novel_chapter.BookName = novel_booklist.BookName
    AND novel_booklist.Category = novel_category.CategoryName
    ORDER BY
    novel_chapter.UpTime DESC
    LIMIT 13贴出结果。show index from novel_chapter;
    ...
    贴出三个表的索引。
      

  2.   

    在这些 novel_chapter.BookName = novel_booklist.BookName
    AND novel_booklist.Category = novel_category.CategoryName 相关的字段上加上索引再说。
      

  3.   

    alter table novel_chapter add index(BookName,UpTime )
    alter table novel_booklist add index(bookname)
    alter table novel_category add index(CategoryName)