我有两张桌子 - > tbl_book_details and tbl_table_traking
tbl_book_details has columns bd_book_code,
bd_isbn,
bd_title,
bd_edition,
bd_author,
bd_publisher,
bd_supplier,
bd_page,
bd_price_type,
bd_cost_price,
bd_price,
bd_Tax,
bd_covering,
bd_availability,
bd_keywords,
bd_notes,
bd_details,
bd_news_latter,
bd_etDate,
bd_weight,
bd_expire_date,
bd_status
tbl_table_traking has columns
tt_id,
tt_action,
tt_table,
tt_record_id,
tt_on_date,
tt_user,
tt_status
该过程是在tbl_book_details上定义的触发器,在插入/修改的情况下,插入tbl_table_traking中的数据以便在何时修改记录以及谁修改记录。
直到现在我一直在使用以下查询,这不是加入 - > <>
SELECT
tbl_books_details.bd_book_code AS bkid,
tbl_books_details.bd_isbn,
tbl_books_details.bd_title AS title,
-- This part is what I believe is slowing down my query
(SELECT
tt_on_date
FROM
tbl_table_tracking
WHERE tt_action = 'MODIFY'
AND tt_record_id = tbl_books_details.bd_book_code ORDER BY tt_on_date) AS bd_etdate
当记录数低于300万时它工作正常,但现在脚本超时了。
我在“tbl_table_traking
”和tt_ondate
上的tt_action
上建立了索引,
如果有任何方法可以将其转换为联接或提高性能?
表traking查询返回修改记录的最新日期。
我的数据库是在mysql中。
答案 0 :(得分:0)
你应该可以做这样的事情。
SELECT
tbl_books_details.bd_book_code AS bkid,
tbl_books_details.bd_isbn,
tbl_books_details.bd_title AS title,
tbl_table_traking.tt_on_date
FROM
tbl_books_details
INNER JOIN tbl_table_tracking
tbl_books_details.bd_book_code = tbl_table_tracking.tt_record_id
WHERE tt_action = 'MODIFY';
希望这会有所帮助......