Еще одно решение заключается в использовании коррелированного подзапроса:
select yt.id, yt.rev, yt.contents
from YourTable yt
where rev =
(select max(rev) from YourTable st where yt.id=st.id)
Наличие индекса (id, rev) делает подзапрос почти как простой поиск ...
Ниже приведены сравнения с решениями в ответе @ AdrianCarneiro (подзапрос, leftjoin), основанные на измерениях MySQL с таблицей InnoDB размером ~ 1 миллион записей, размер группы: 1-3.
Хотя для полной проверки таблицы подзапрос / leftjoin / коррелированные тайминги относятся друг к другу как 6/8/9, когда дело доходит до прямого поиска или партии (id in (1,2,3)
), подзапрос намного медленнее, чем другие (из-за повторного ввода подзапроса). Тем не менее я не мог отличить левый и коррелированный решения от скорости.
Наконец, поскольку leftjoin создает n * (n + 1) / 2, объединяется в группы, на его производительность может сильно влиять размер групп ...
Документ gcc
C11 указывает, что он не поддерживает потоки, он говорит:
Threading [Необязательно] | Проблема с библиотекой (не реализована)
blockquote>Как указывает документ, это не проблема
gcc
илиclang
, а проблемаglibc
. Как заметил Зак, это выглядит как , возможно, скоро будет работать , чтобы получить поддержку этого вglibc
, но это не поможет вам сейчас. Вы можете использовать этот тем временем.Исправлено для glibc 2.28
Согласно Ошибка 14092 - Поддержка потоков C11 , это будет фиксируется в glibc 2.8:
Реализовано вверх по потоку:
9d0a979 Добавить ручную документацию для threads.h 0a07288 nptl: Добавить тестовые примеры для потоков ISO C11 c6dd669 nptl: Добавить абилик символы для потоков C11 78d4013 nptl: Добавить потоки C11 tss_ * функции 918311a nptl: Добавить потоки C11 cnd_ * функции 3c20a67 nptl: Добавить C11 threads функции call_once 18d59c1 nptl: Добавить потоки C11 mtx_ * функции ce7528f nptl: Добавить потоки C11 thrd_ * функции
Он будет включен в 2.28.
blockquote>
Хотя потоки C11 еще не реализованы, потоки C ++ 11 реализованы и имеют схожие функции. Конечно, C ++ 11 может быть неприемлемым решением, и в этом случае ваши лучшие комментарии о потоках POSIX - ваша лучшая надежда.