Perhaps use a text input box, but then you must rely on the user knowing the material number by memory. Are the 56,000 materials actual posted values in the datasource? Perhaps you could restrict the query down to just materials posted within the past month? Or a time range share between the two data sources? (e.g. if your main datasource has a time period selection, apply it also to the 2nd material LOV generating datasource?)
Or, perhaps only return Top 100 materials based on some measure?