large dataset with no primary key, how do i group by efficiently?

I’m using Ransack and will_paginate on an Oracle view to fetch records to generate an array of hashes for DataTables.

@users = User.search(params[:q]).result.page(params[:page]).per_page(params[:per_page])

There’s no primary key so my display currently looks like:

John | Doe | 123