Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7832373
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 2, 20262026-06-02T12:11:13+00:00 2026-06-02T12:11:13+00:00

I have a log table which looks as follows: logs (_id_, client, metric, value);

  • 0

I have a log table which looks as follows:

logs (_id_, client, metric, value);

I am attempting to write the following query in MySQL from a PHP front end to get information out of a log table.

SELECT client, LAST(value) AS value
FROM logs 
WHERE metric = 'free space'
GROUP BY client;

Except, of course, that LAST is not a valid aggregate function.

My proposed solution is this:

SELECT client, value 
FROM logs 
WHERE id IN (
   SELECT MAX(id) 
   FROM logs 
   WHERE metric = 'free space' 
   GROUP BY client);

However, for a very small table of 4,000 rows, this query takes in excess of 60 seconds to execute on my development machine.

Suggestions?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-02T12:11:19+00:00Added an answer on June 2, 2026 at 12:11 pm

    You should do this with a join

    SELECT l.client, l.value 
      FROM logs l
      JOIN ( SELECT client, MAX(id) as id
               FROM logs 
              WHERE metric = 'free space' 
              GROUP BY client ) s
        ON l.id = s.id
    

    You should also have a (unique if possible) index on id for the outer query, this enables the join to use the indexes. If optimisation is massively important you may also want an index on client, id, or possibly id, client, for the sub-select, though this isn’t as important as you have to scan the entire table anyway.

    Please also see SQL JOIN vs IN performance? and IN vs. JOIN with large rowsets for discussions around using in or join.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have an html table built from a database query which loops through and
I have a log table containing user ids, ip addresses and log in datetimes.
Say I have a 'user_log' table with the following field: id user_id status_text timestamp
I have a table on my database called 'Log'. This Log table contains ID,
I have the following table EVENT_LOG : EVENT_ID: pk, int, not null TYPEID: fk,
I have a table that contains log entries for a program I'm writing. I'm
I have a table that functions as an event log and stores the users
I am working with an old MySQL table, which serves as a log of
I have a log table that contains job status. One of the columns is
I have following setup A -> B -> C A-Mapping: <hibernate-mapping> <class name=db.base.A table=A>

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.