optimize dao, use raw sql