To help reduce lock contention between update and select queries:
Use datarows or datapages locking for tables with lock contention due to updates and selects.
If tables have more than 32 columns, make the first 32 columns the columns that are most frequently used as search arguments and in other query clauses.
Select only needed columns. Avoid using select * when all columns are not needed by the application.
Use any available predicates for select queries. When a table uses datapages locking, the information about updated columns is kept for the entire page, so that if a transaction updates some columns in one row, and other columns in another row on the same page, any select query that needs to access that page must avoid using any of the updated columns.